diff --git a/src/kscli/cli.py b/src/kscli/cli.py index 558a927..b4590e8 100644 --- a/src/kscli/cli.py +++ b/src/kscli/cli.py @@ -24,7 +24,7 @@ from kscli.config import ensure_config, get_default_format _VALUED_OPTS = {"--format": "format", "-f": "format", "--base-url": "base_url"} -_FLAG_OPTS = {"--no-header": "no_header"} +_FLAG_OPTS = {"--no-header": "no_header", "-H": "no_header"} _FORMAT_CHOICES_LIST = ["table", "json", "yaml", "id-only", "tree"] _FORMAT_CHOICES = frozenset(_FORMAT_CHOICES_LIST) @@ -103,7 +103,7 @@ def parse_args(self, ctx: click.Context, args: list[str]) -> list[str]: type=click.Choice(_FORMAT_CHOICES_LIST), default=None, ) -@click.option("--no-header", is_flag=True, default=False) +@click.option("--no-header", "-H", is_flag=True, default=False) @click.option("--base-url", default=None) @click.pass_context def main(ctx, format_, no_header, base_url): # noqa: ARG001 — params required by Click for --help diff --git a/src/kscli/commands/auth.py b/src/kscli/commands/auth.py index 4fc32c3..b841e7f 100644 --- a/src/kscli/commands/auth.py +++ b/src/kscli/commands/auth.py @@ -12,6 +12,7 @@ @click.command("login") @click.option( "--api-key", + "-k", prompt="API key", hide_input=True, help="User-scoped API key (sk-user-...).", diff --git a/src/kscli/commands/chunks.py b/src/kscli/commands/chunks.py index a1bf7c6..cc7ee3b 100644 --- a/src/kscli/commands/chunks.py +++ b/src/kscli/commands/chunks.py @@ -157,8 +157,8 @@ def get_version_chunk_ids(ctx, version_id): @chunks.command("search") -@click.option("--query", required=True) -@click.option("--limit", type=int, default=10) +@click.option("--query", "-q", required=True) +@click.option("--limit", "-l", type=int, default=10) @click.option( "--search-type", type=click.Choice(["dense_only", "full_text"], case_sensitive=False), diff --git a/src/kscli/commands/document_versions.py b/src/kscli/commands/document_versions.py index 8f2e521..7a04c91 100644 --- a/src/kscli/commands/document_versions.py +++ b/src/kscli/commands/document_versions.py @@ -16,8 +16,8 @@ def document_versions(): @document_versions.command("list") @click.option("--document-id", type=click.UUID, required=True) -@click.option("--limit", type=int, default=20) -@click.option("--offset", type=int, default=0) +@click.option("--limit", "-l", type=int, default=20) +@click.option("--offset", "-o", type=int, default=0) @click.pass_context def list_versions(ctx, document_id, limit, offset): """List versions for a document.""" diff --git a/src/kscli/commands/documents.py b/src/kscli/commands/documents.py index 7ce591d..c547e3e 100644 --- a/src/kscli/commands/documents.py +++ b/src/kscli/commands/documents.py @@ -19,13 +19,14 @@ def documents(): @documents.command("list") @click.option( "--parent-path-part-id", + "-p", "parent_path_part_id", type=click.UUID, default=None, help="Parent path part ID; omit for root/top-level.", ) -@click.option("--limit", type=int, default=20) -@click.option("--offset", type=int, default=0) +@click.option("--limit", "-l", type=int, default=20) +@click.option("--offset", "-o", type=int, default=0) @click.pass_context def list_documents(ctx, parent_path_part_id, limit, offset): """List documents.""" @@ -53,9 +54,10 @@ def describe_document(ctx, document_id): @documents.command("create") -@click.option("--name", required=True) +@click.option("--name", "-n", required=True) @click.option( "--parent-path-part-id", + "-p", "parent_path_part_id", type=click.UUID, required=True, @@ -84,9 +86,10 @@ def create_document(ctx, name, parent_path_part_id, doc_type, origin): @documents.command("update") @click.argument("document_id", type=click.UUID) -@click.option("--name", default=None) +@click.option("--name", "-n", default=None) @click.option( "--parent-path-part-id", + "-p", "parent_path_part_id", type=click.UUID, default=None, @@ -131,7 +134,7 @@ def delete_document(ctx, document_id): required=True, help="Parent path part ID (e.g. folder's path_part_id from 'describe folder').", ) -@click.option("--name", default=None) +@click.option("--name", "-n", default=None) @click.pass_context def ingest_document(ctx, file_path, path_part_id, name): """Ingest a document (upload file + start processing). Parent is the folder's path_part_id.""" diff --git a/src/kscli/commands/folders.py b/src/kscli/commands/folders.py index f6ae190..4a6c6e2 100644 --- a/src/kscli/commands/folders.py +++ b/src/kscli/commands/folders.py @@ -139,6 +139,7 @@ def folders(): @folders.command("list") @click.option( "--parent-path-part-id", + "-p", "parent_path_part_id", type=click.UUID, default=None, @@ -174,8 +175,8 @@ def folders(): default=False, help="Include tags in the response.", ) -@click.option("--limit", type=int, default=20) -@click.option("--offset", type=int, default=0) +@click.option("--limit", "-l", type=int, default=20) +@click.option("--offset", "-o", type=int, default=0) @click.pass_context def list_folders( ctx, @@ -261,9 +262,10 @@ def describe_folder(ctx, folder_id): @folders.command("create") -@click.option("--name", required=True) +@click.option("--name", "-n", required=True) @click.option( "--parent-path-part-id", + "-p", "parent_path_part_id", type=click.UUID, required=True, @@ -286,9 +288,10 @@ def create_folder(ctx, name, parent_path_part_id): @folders.command("update") @click.argument("folder_id", type=click.UUID) -@click.option("--name", default=None) +@click.option("--name", "-n", default=None) @click.option( "--parent-path-part-id", + "-p", "parent_path_part_id", type=click.UUID, default=None, @@ -347,7 +350,7 @@ def delete_folder(ctx, folder_id): default=".pdf,.docx", help="Comma-separated file extensions to ingest (default: .pdf,.docx).", ) -@click.option("--dry-run", is_flag=True, help="Print plan without uploading.") +@click.option("--dry-run", "-d", is_flag=True, help="Print plan without uploading.") @click.pass_context def ingest_folders( ctx: click.Context, diff --git a/src/kscli/commands/invites.py b/src/kscli/commands/invites.py index 14a6dec..2cb1c40 100644 --- a/src/kscli/commands/invites.py +++ b/src/kscli/commands/invites.py @@ -19,8 +19,8 @@ def invites(): @invites.command("list") -@click.option("--limit", type=int, default=20) -@click.option("--offset", type=int, default=0) +@click.option("--limit", "-l", type=int, default=20) +@click.option("--offset", "-o", type=int, default=0) @click.pass_context def list_invites(ctx, limit, offset): """List invites.""" diff --git a/src/kscli/commands/path_parts.py b/src/kscli/commands/path_parts.py index f5b73c0..d7c17ad 100644 --- a/src/kscli/commands/path_parts.py +++ b/src/kscli/commands/path_parts.py @@ -22,8 +22,8 @@ def path_parts(): default=None, help="Parent path ID; omit for root/top-level.", ) -@click.option("--limit", type=int, default=20) -@click.option("--offset", type=int, default=0) +@click.option("--limit", "-l", type=int, default=20) +@click.option("--offset", "-o", type=int, default=0) @click.pass_context def list_path_parts(ctx, parent_path_id, limit, offset): """List path parts.""" diff --git a/src/kscli/commands/permissions.py b/src/kscli/commands/permissions.py index da606ea..30b046b 100644 --- a/src/kscli/commands/permissions.py +++ b/src/kscli/commands/permissions.py @@ -21,8 +21,8 @@ def permissions(): @permissions.command("list") @click.option("--tenant-id", type=click.UUID, default=None) @click.option("--user-id", type=click.UUID, default=None) -@click.option("--limit", type=int, default=20) -@click.option("--offset", type=int, default=0) +@click.option("--limit", "-l", type=int, default=20) +@click.option("--offset", "-o", type=int, default=0) @click.pass_context def list_permissions(ctx, tenant_id, user_id, limit, offset): """List permissions for a user in a tenant.""" diff --git a/src/kscli/commands/sections.py b/src/kscli/commands/sections.py index 7a30b47..5fa169c 100644 --- a/src/kscli/commands/sections.py +++ b/src/kscli/commands/sections.py @@ -25,7 +25,7 @@ def describe_section(ctx, section_id): @sections.command("create") -@click.option("--name", required=True) +@click.option("--name", "-n", required=True) @click.option("--parent-path-id", type=click.UUID, required=True) @click.option("--page-number", type=int, default=None) @click.option("--prev-sibling-path-id", type=click.UUID, default=None) @@ -48,7 +48,7 @@ def create_section(ctx, name, parent_path_id, page_number, prev_sibling_path_id) @sections.command("update") @click.argument("section_id", type=click.UUID) -@click.option("--name", default=None) +@click.option("--name", "-n", default=None) @click.option("--page-number", type=int, default=None) @click.option("--prev-sibling-path-id", type=click.UUID, default=None) @click.option("--move-to-head", is_flag=True, default=False) diff --git a/src/kscli/commands/tags.py b/src/kscli/commands/tags.py index 2aa0d4e..b42b923 100644 --- a/src/kscli/commands/tags.py +++ b/src/kscli/commands/tags.py @@ -15,8 +15,8 @@ def tags(): @tags.command("list") -@click.option("--limit", type=int, default=20) -@click.option("--offset", type=int, default=0) +@click.option("--limit", "-l", type=int, default=20) +@click.option("--offset", "-o", type=int, default=0) @click.pass_context def list_tags(ctx, limit, offset): """List tags.""" @@ -40,7 +40,7 @@ def describe_tag(ctx, tag_id): @tags.command("create") -@click.option("--name", required=True) +@click.option("--name", "-n", required=True) @click.option("--color", default=None) @click.option("--description", default=None) @click.pass_context @@ -58,7 +58,7 @@ def create_tag(ctx, name, color, description): @tags.command("update") @click.argument("tag_id", type=click.UUID) -@click.option("--name", default=None) +@click.option("--name", "-n", default=None) @click.option("--color", default=None) @click.option("--description", default=None) @click.pass_context diff --git a/src/kscli/commands/tenants.py b/src/kscli/commands/tenants.py index d0648a3..729a120 100644 --- a/src/kscli/commands/tenants.py +++ b/src/kscli/commands/tenants.py @@ -18,8 +18,8 @@ def tenants(): @tenants.command("list") -@click.option("--limit", type=int, default=20) -@click.option("--offset", type=int, default=0) +@click.option("--limit", "-l", type=int, default=20) +@click.option("--offset", "-o", type=int, default=0) @click.pass_context def list_tenants(ctx, limit, offset): """List tenants.""" @@ -43,7 +43,7 @@ def describe_tenant(ctx, tenant_id): @tenants.command("create") -@click.option("--name", required=True) +@click.option("--name", "-n", required=True) @click.option("--idp-config", default=None, help="JSON string of IDP config") @click.pass_context def create_tenant(ctx, name, idp_config): @@ -58,7 +58,7 @@ def create_tenant(ctx, name, idp_config): @tenants.command("update") @click.argument("tenant_id", type=click.UUID) -@click.option("--name", default=None) +@click.option("--name", "-n", default=None) @click.option("--idp-config", default=None, help="JSON string of IDP config") @click.pass_context def update_tenant(ctx, tenant_id, name, idp_config): @@ -88,8 +88,8 @@ def delete_tenant(ctx, tenant_id): @tenants.command("list-users") @click.argument("tenant_id", type=click.UUID) -@click.option("--limit", type=int, default=20) -@click.option("--offset", type=int, default=0) +@click.option("--limit", "-l", type=int, default=20) +@click.option("--offset", "-o", type=int, default=0) @click.pass_context def list_tenant_users(ctx, tenant_id, limit, offset): """List users in a tenant.""" diff --git a/src/kscli/commands/thread_messages.py b/src/kscli/commands/thread_messages.py index 82d925c..02c1bba 100644 --- a/src/kscli/commands/thread_messages.py +++ b/src/kscli/commands/thread_messages.py @@ -16,8 +16,8 @@ def thread_messages(): @thread_messages.command("list") @click.option("--thread-id", type=click.UUID, required=True) -@click.option("--limit", type=int, default=20) -@click.option("--offset", type=int, default=0) +@click.option("--limit", "-l", type=int, default=20) +@click.option("--offset", "-o", type=int, default=0) @click.pass_context def list_messages(ctx, thread_id, limit, offset): """List messages in a thread.""" diff --git a/src/kscli/commands/threads.py b/src/kscli/commands/threads.py index 9ff2ad8..8e6df64 100644 --- a/src/kscli/commands/threads.py +++ b/src/kscli/commands/threads.py @@ -15,9 +15,9 @@ def threads(): @threads.command("list") -@click.option("--parent-path-part-id", type=click.UUID, default=None) -@click.option("--limit", type=int, default=20) -@click.option("--offset", type=int, default=0) +@click.option("--parent-path-part-id", "-p", type=click.UUID, default=None) +@click.option("--limit", "-l", type=int, default=20) +@click.option("--offset", "-o", type=int, default=0) @click.pass_context def list_threads(ctx, parent_path_part_id, limit, offset): """List threads.""" @@ -44,7 +44,7 @@ def describe_thread(ctx, thread_id): @threads.command("create") @click.option("--title", required=True) -@click.option("--parent-path-part-id", type=click.UUID, default=None) +@click.option("--parent-path-part-id", "-p", type=click.UUID, default=None) @click.pass_context def create_thread(ctx, title, parent_path_part_id): """Create a thread.""" diff --git a/src/kscli/commands/workflows.py b/src/kscli/commands/workflows.py index ea74e8b..84ad211 100644 --- a/src/kscli/commands/workflows.py +++ b/src/kscli/commands/workflows.py @@ -15,8 +15,8 @@ def workflows(): @workflows.command("list") -@click.option("--limit", type=int, default=20) -@click.option("--offset", type=int, default=0) +@click.option("--limit", "-l", type=int, default=20) +@click.option("--offset", "-o", type=int, default=0) @click.pass_context def list_workflows(ctx, limit, offset): """List workflows."""