@abapify/adt-plugin-gcts-cli 0.4.38 → 0.4.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/lib/client/gcts-client.ts","../src/lib/commands/gcts.ts"],"sourcesContent":["/**\n * Typed interface for the subset of the ADT client used by the gCTS CLI.\n *\n * The `CliContext.getAdtClient()` factory (provided by `adt-cli`) returns\n * `Promise<unknown>`. To keep the plugin self-contained, we declare the\n * exact shape we need here, structurally matching `client.adt.gcts.*` from\n * `@abapify/adt-contracts`.\n */\n\nimport type {\n GctsRepositoryEnvelope,\n GctsRepositoriesResponse,\n GctsBranchesResponse,\n GctsCreateBranchResponse,\n GctsLogResponse,\n GctsPullResponse,\n GctsObjectsResponse,\n GctsConfigResponse,\n GctsCreateRepositoryRequest,\n GctsCreateBranchRequest,\n GctsCommitRequest,\n GctsSetConfigRequest,\n} from '@abapify/adt-contracts';\n\nexport interface GctsClient {\n adt: {\n gcts: {\n repository: {\n list: () => Promise<GctsRepositoriesResponse>;\n get: (rid: string) => Promise<GctsRepositoryEnvelope>;\n create: (\n body: GctsCreateRepositoryRequest,\n ) => Promise<GctsRepositoryEnvelope>;\n delete: (rid: string) => Promise<Record<string, unknown>>;\n clone: (rid: string) => Promise<Record<string, unknown>>;\n pull: (rid: string) => Promise<GctsPullResponse>;\n push: (rid: string) => Promise<Record<string, unknown>>;\n checkout: (\n rid: string,\n currentBranch: string,\n targetBranch: string,\n ) => Promise<Record<string, unknown>>;\n log: (rid: string) => Promise<GctsLogResponse>;\n objects: (rid: string) => Promise<GctsObjectsResponse>;\n setItem: (\n rid: string,\n body: Record<string, unknown>,\n ) => Promise<Record<string, unknown>>;\n };\n branches: {\n list: (rid: string) => Promise<GctsBranchesResponse>;\n create: (\n rid: string,\n body: GctsCreateBranchRequest,\n ) => Promise<GctsCreateBranchResponse>;\n delete: (rid: string, name: string) => Promise<Record<string, unknown>>;\n switch: (\n rid: string,\n currentBranch: string,\n target: string,\n ) => Promise<Record<string, unknown>>;\n };\n commits: {\n commit: (\n rid: string,\n body: GctsCommitRequest,\n ) => Promise<Record<string, unknown>>;\n };\n config: {\n get: (rid: string, key: string) => Promise<GctsConfigResponse>;\n set: (\n rid: string,\n body: GctsSetConfigRequest,\n ) => Promise<Record<string, unknown>>;\n delete: (rid: string, key: string) => Promise<Record<string, unknown>>;\n };\n };\n };\n}\n\nimport type { CliContext } from '@abapify/adt-plugin';\n\n/**\n * Resolve a `GctsClient` from the CLI context, printing a friendly error and\n * exiting when no authenticated client is available (mirrors the pattern in\n * `@abapify/adt-atc`).\n */\nexport async function getGctsClient(ctx: CliContext): Promise<GctsClient> {\n if (!ctx.getAdtClient) {\n ctx.logger.error(\n '❌ ADT client not available. gCTS commands require authentication.',\n );\n ctx.logger.error(' Run: adt auth login');\n process.exit(1);\n }\n return (await ctx.getAdtClient()) as GctsClient;\n}\n","/**\n * `adt gcts` — top-level CLI command plugin.\n *\n * Mirrors sapcli's `sap gcts` surface:\n * - `adt gcts repo list / create / clone / delete / pull / push / checkout`\n * - `adt gcts branch list / create / switch / delete`\n * - `adt gcts commit <rid>`\n * - `adt gcts log <rid>`\n * - `adt gcts config <rid> get|set|unset [key] [value]`\n * - `adt gcts objects <rid>`\n *\n * All commands talk to `/sap/bc/cts_abapvcs/` via the typed contracts in\n * `@abapify/adt-contracts` (accessed as `client.adt.gcts.*`). JSON responses\n * are printed via `console.log` (respects `--json` flag where applicable).\n */\n\nimport type { CliCommandPlugin, CliContext } from '@abapify/adt-plugin';\nimport { getGctsClient } from '../client/gcts-client';\n\n// ── small helpers ──────────────────────────────────────────────────────────\n\n/** Stringify an object with 2-space indent (matches `sap gcts ... -f JSON`). */\nfunction json(x: unknown): string {\n return JSON.stringify(x, null, 2);\n}\n\n/** Safely coerce an `args` value to a string. */\nfunction str(v: unknown): string {\n return typeof v === 'string' ? v : '';\n}\n\n// ── repo subcommands ───────────────────────────────────────────────────────\n\nconst repoList: CliCommandPlugin = {\n name: 'list',\n description: 'List all gCTS repositories (GET /repository)',\n options: [{ flags: '--json', description: 'Output as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const res = await client.adt.gcts.repository.list();\n const repos = res.result ?? [];\n if (args.json) {\n console.log(json(repos));\n return;\n }\n if (repos.length === 0) {\n ctx.logger.info('No gCTS repositories found.');\n return;\n }\n for (const r of repos) {\n console.log(\n `${r.rid}\\t${r.status ?? ''}\\t${r.branch ?? ''}\\t${r.url ?? ''}`,\n );\n }\n },\n};\n\nconst repoCreate: CliCommandPlugin = {\n name: 'create',\n description: 'Create a new gCTS repository (POST /repository)',\n arguments: [\n { name: '<rid>', description: 'Repository ID' },\n { name: '<url>', description: 'Git URL (https://...)' },\n ],\n options: [\n {\n flags: '--vsid <vsid>',\n description: 'Virtual system ID',\n default: '6IT',\n },\n {\n flags: '--role <role>',\n description: 'Repository role (SOURCE|TARGET)',\n default: 'SOURCE',\n },\n {\n flags: '--type <type>',\n description: 'Repository type (GITHUB|GIT)',\n default: 'GITHUB',\n },\n {\n flags: '--starting-folder <dir>',\n description: 'Repository start dir',\n default: 'src/',\n },\n { flags: '--vcs-token <token>', description: 'VCS authentication token' },\n { flags: '--json', description: 'Output response as JSON' },\n ],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const url = str(args.url);\n const config: Array<{ key: string; value: string }> = [];\n if (args.startingFolder)\n config.push({ key: 'VCS_TARGET_DIR', value: str(args.startingFolder) });\n if (args.vcsToken)\n config.push({ key: 'CLIENT_VCS_AUTH_TOKEN', value: str(args.vcsToken) });\n\n const body = {\n repository: rid,\n data: {\n rid,\n name: rid,\n vsid: str(args.vsid) || '6IT',\n url,\n role: str(args.role) || 'SOURCE',\n type: str(args.type) || 'GITHUB',\n connection: 'ssl',\n ...(config.length > 0 ? { config } : {}),\n },\n };\n const res = await client.adt.gcts.repository.create(body);\n if (args.json) {\n console.log(json(res));\n return;\n }\n const repo = res.repository ?? res.result;\n ctx.logger.info(`✅ Created repository \"${rid}\"`);\n if (repo?.status) ctx.logger.info(` status: ${repo.status}`);\n },\n};\n\nconst repoClone: CliCommandPlugin = {\n name: 'clone',\n description:\n 'Clone repository on target system (POST /repository/<rid>/clone)',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [{ flags: '--json', description: 'Output response as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const res = await client.adt.gcts.repository.clone(rid);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`✅ Cloned repository \"${rid}\"`);\n },\n};\n\nconst repoDelete: CliCommandPlugin = {\n name: 'delete',\n description: 'Delete a gCTS repository (DELETE /repository/<rid>)',\n alias: 'rm',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [{ flags: '--json', description: 'Output response as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const res = await client.adt.gcts.repository.delete(rid);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`🗑 Deleted repository \"${rid}\"`);\n },\n};\n\nconst repoPull: CliCommandPlugin = {\n name: 'pull',\n description: 'Pull a gCTS repository (GET /repository/<rid>/pullByCommit)',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [{ flags: '--json', description: 'Output response as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const res = await client.adt.gcts.repository.pull(rid);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`✅ Pulled repository \"${rid}\"`);\n if (res.fromCommit && res.toCommit) {\n ctx.logger.info(` ${res.fromCommit} -> ${res.toCommit}`);\n } else if (res.toCommit) {\n ctx.logger.info(` HEAD = ${res.toCommit}`);\n }\n },\n};\n\nconst repoPush: CliCommandPlugin = {\n name: 'push',\n description: 'Push a gCTS repository (GET /repository/<rid>/push)',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [{ flags: '--json', description: 'Output response as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const res = await client.adt.gcts.repository.push(rid);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`✅ Pushed repository \"${rid}\"`);\n },\n};\n\nconst repoCheckout: CliCommandPlugin = {\n name: 'checkout',\n description:\n 'Check out a branch (GET /repository/<rid>/branches/<current>/switch?branch=X)',\n arguments: [\n { name: '<rid>', description: 'Repository ID' },\n { name: '<branch>', description: 'Target branch name' },\n {\n name: '[currentBranch]',\n description:\n 'Current branch (optional — inferred from repo if omitted; defaults to \"main\")',\n },\n ],\n options: [{ flags: '--json', description: 'Output response as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const target = str(args.branch);\n let current = str(args.currentBranch);\n\n if (!current) {\n // Discover current branch — mirrors sapcli's behaviour of reading\n // the repo `branch` property before building the switch URL.\n try {\n const repoRes = await client.adt.gcts.repository.get(rid);\n current = str(repoRes.result?.branch) || 'main';\n } catch {\n current = 'main';\n }\n }\n\n const res = await client.adt.gcts.repository.checkout(rid, current, target);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`✅ Switched \"${rid}\" from \"${current}\" to \"${target}\"`);\n },\n};\n\nconst repoGroup: CliCommandPlugin = {\n name: 'repo',\n description: 'Manage gCTS repositories',\n subcommands: [\n repoList,\n repoCreate,\n repoClone,\n repoDelete,\n repoPull,\n repoPush,\n repoCheckout,\n ],\n};\n\n// ── branch subcommands ─────────────────────────────────────────────────────\n\nconst branchList: CliCommandPlugin = {\n name: 'list',\n description: 'List branches of a repository (GET /branches)',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [\n { flags: '-r, --remote', description: 'Show remote branches only' },\n { flags: '-a, --all', description: 'Show all branches (local + remote)' },\n { flags: '--json', description: 'Output as JSON' },\n ],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const res = await client.adt.gcts.branches.list(rid);\n const all = res.branches ?? [];\n let filtered: typeof all;\n if (args.remote) {\n filtered = all.filter((b) => b.type === 'remote');\n } else if (args.all) {\n filtered = all;\n } else {\n filtered = all.filter((b) => b.type === 'local');\n }\n\n if (args.json) {\n console.log(json(filtered));\n return;\n }\n for (const b of filtered) {\n console.log(`${b.name}\\t${b.type ?? ''}\\t${b.ref ?? ''}`);\n }\n },\n};\n\nconst branchCreate: CliCommandPlugin = {\n name: 'create',\n description: 'Create a new branch (POST /branches)',\n arguments: [\n { name: '<rid>', description: 'Repository ID' },\n { name: '<name>', description: 'Branch name' },\n ],\n options: [\n { flags: '--local-only', description: 'Create a local branch only' },\n { flags: '--symbolic', description: 'Create a symbolic ref' },\n { flags: '--peeled', description: 'Create a peeled ref' },\n { flags: '--json', description: 'Output response as JSON' },\n ],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const name = str(args.name);\n const body = {\n branch: name,\n type: args.localOnly ? ('local' as const) : ('global' as const),\n isSymbolic: Boolean(args.symbolic),\n isPeeled: Boolean(args.peeled),\n };\n const res = await client.adt.gcts.branches.create(rid, body);\n if (args.json) {\n console.log(json(res));\n return;\n }\n const branchName = res.branch?.name ?? name;\n ctx.logger.info(`✅ Branch \"${branchName}\" created in \"${rid}\"`);\n },\n};\n\nconst branchDelete: CliCommandPlugin = {\n name: 'delete',\n description: 'Delete a branch (DELETE /branches/<name>)',\n arguments: [\n { name: '<rid>', description: 'Repository ID' },\n { name: '<name>', description: 'Branch name' },\n ],\n options: [{ flags: '--json', description: 'Output response as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const name = str(args.name);\n const res = await client.adt.gcts.branches.delete(rid, name);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`🗑 Deleted branch \"${name}\" in \"${rid}\"`);\n },\n};\n\nconst branchSwitch: CliCommandPlugin = {\n name: 'switch',\n description:\n 'Switch branches (GET /branches/<current>/switch?branch=<target>)',\n arguments: [\n { name: '<rid>', description: 'Repository ID' },\n { name: '<target>', description: 'Target branch name' },\n { name: '[current]', description: 'Current branch (defaults to \"main\")' },\n ],\n options: [{ flags: '--json', description: 'Output response as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const target = str(args.target);\n let current = str(args.current);\n if (!current) {\n try {\n const r = await client.adt.gcts.repository.get(rid);\n current = str(r.result?.branch) || 'main';\n } catch {\n current = 'main';\n }\n }\n const res = await client.adt.gcts.branches.switch(rid, current, target);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`✅ Switched to \"${target}\" in \"${rid}\"`);\n },\n};\n\nconst branchGroup: CliCommandPlugin = {\n name: 'branch',\n description: 'Manage gCTS branches',\n subcommands: [branchList, branchCreate, branchDelete, branchSwitch],\n};\n\n// ── top-level `commit` / `log` / `config` / `objects` ──────────────────────\n\nconst commitCmd: CliCommandPlugin = {\n name: 'commit',\n description: 'Commit a package or transport (POST /repository/<rid>/commit)',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [\n {\n flags: '-m, --message <text>',\n description: 'Commit message (default: auto-generated)',\n },\n {\n flags: '-d, --devc <pkg>',\n description: 'ABAP package name (defaults to <rid>)',\n },\n {\n flags: '--corrnr <tr>',\n description: 'Transport number (mutually exclusive with --devc)',\n },\n { flags: '--description <text>', description: 'Long commit description' },\n { flags: '--json', description: 'Output response as JSON' },\n ],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const corrnr = str(args.corrnr);\n\n const objects = corrnr\n ? [{ object: corrnr, type: 'TRANSPORT' }]\n : [\n {\n object: (str(args.devc) || rid).toUpperCase(),\n type: 'FULL_PACKAGE',\n },\n ];\n\n const defaultMsg = corrnr\n ? `Transport ${corrnr}`\n : `Export package ${(str(args.devc) || rid).toUpperCase()}`;\n\n const body = {\n message: str(args.message) || defaultMsg,\n autoPush: 'true' as const,\n objects,\n ...(args.description ? { description: str(args.description) } : {}),\n };\n\n const res = await client.adt.gcts.commits.commit(rid, body);\n if (args.json) {\n console.log(json(res));\n return;\n }\n const detail = corrnr\n ? `transport ${corrnr}`\n : `package ${objects[0].object}`;\n ctx.logger.info(`✅ Committed to \"${rid}\": ${detail}`);\n },\n};\n\nconst logCmd: CliCommandPlugin = {\n name: 'log',\n description:\n 'Show repository commit history (GET /repository/<rid>/getCommit)',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [{ flags: '--json', description: 'Output as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const res = await client.adt.gcts.repository.log(rid);\n const commits = res.commits ?? [];\n if (args.json) {\n console.log(json(commits));\n return;\n }\n for (const c of commits) {\n console.log(`commit ${c.id ?? ''}`);\n if (c.author) console.log(`Author: ${c.author} <${c.authorMail ?? ''}>`);\n if (c.date) console.log(`Date: ${c.date}`);\n console.log('');\n console.log(` ${c.message ?? ''}`);\n console.log('');\n }\n },\n};\n\nconst objectsCmd: CliCommandPlugin = {\n name: 'objects',\n description: 'List repository objects (GET /repository/<rid>/getObjects)',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [{ flags: '--json', description: 'Output as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const res = await client.adt.gcts.repository.objects(rid);\n const objs = res.objects ?? [];\n if (args.json) {\n console.log(json(objs));\n return;\n }\n for (const o of objs) {\n console.log(`${o.pgmid ?? ''}\\t${o.type ?? ''}\\t${o.object ?? ''}`);\n }\n },\n};\n\n// ── config subcommand helpers ──────────────────────────────────────────────\n\ntype GctsClient = Awaited<ReturnType<typeof getGctsClient>>;\ntype CliArgs = Parameters<CliCommandPlugin['execute']>[0];\n\n/** `config list` — print the full repository configuration. */\nasync function configList(\n client: GctsClient,\n rid: string,\n args: CliArgs,\n): Promise<void> {\n const repo = await client.adt.gcts.repository.get(rid);\n const cfg = repo.result?.config ?? [];\n if (args.json) {\n console.log(json(cfg));\n return;\n }\n for (const c of cfg) {\n console.log(`${c.key}=${c.value ?? ''}`);\n }\n}\n\n/** `config get` — print a single config entry. */\nasync function configGet(\n client: GctsClient,\n rid: string,\n key: string,\n args: CliArgs,\n): Promise<void> {\n const res = await client.adt.gcts.config.get(rid, key);\n if (args.json) {\n console.log(json(res));\n return;\n }\n console.log(`${res.result?.key ?? key}=${res.result?.value ?? ''}`);\n}\n\n/** `config set` — write a config entry. */\nasync function configSet(\n client: GctsClient,\n rid: string,\n key: string,\n args: CliArgs,\n ctx: CliContext,\n): Promise<void> {\n const value = str(args.value);\n if (!value) {\n ctx.logger.error('❌ \"set\" requires a value argument.');\n process.exit(1);\n }\n const res = await client.adt.gcts.config.set(rid, { key, value });\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`✅ ${key}=${value}`);\n}\n\n/** `config unset` / `config delete` — remove a config entry. */\nasync function configUnset(\n client: GctsClient,\n rid: string,\n key: string,\n args: CliArgs,\n ctx: CliContext,\n): Promise<void> {\n const res = await client.adt.gcts.config.delete(rid, key);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`🗑 unset ${key}`);\n}\n\nconst configCmd: CliCommandPlugin = {\n name: 'config',\n description:\n 'Manage repository configuration (GET/POST/DELETE /repository/<rid>/config)',\n arguments: [\n { name: '<rid>', description: 'Repository ID' },\n {\n name: '[action]',\n description: 'get | set | unset | list (default: list)',\n default: 'list',\n },\n { name: '[key]', description: 'Config key (for get/set/unset)' },\n { name: '[value]', description: 'Config value (for set)' },\n ],\n options: [{ flags: '--json', description: 'Output as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const action = (str(args.action) || 'list').toLowerCase();\n const key = str(args.key);\n\n if (action === 'list') {\n await configList(client, rid, args);\n return;\n }\n\n if (!key) {\n ctx.logger.error(`❌ \"${action}\" requires a key argument.`);\n process.exit(1);\n }\n\n if (action === 'get') {\n await configGet(client, rid, key, args);\n return;\n }\n\n if (action === 'set') {\n await configSet(client, rid, key, args, ctx);\n return;\n }\n\n if (action === 'unset' || action === 'delete') {\n await configUnset(client, rid, key, args, ctx);\n return;\n }\n\n ctx.logger.error(\n `❌ Unknown config action \"${action}\" (expected: get|set|unset|list)`,\n );\n process.exit(1);\n },\n};\n\n// ── root ───────────────────────────────────────────────────────────────────\n\nexport const gctsCommand: CliCommandPlugin = {\n name: 'gcts',\n description: 'SAP gCTS (git-enabled CTS) operations (repo/branch/commit/...)',\n subcommands: [\n repoGroup,\n branchGroup,\n commitCmd,\n logCmd,\n objectsCmd,\n configCmd,\n ],\n execute(_args: Record<string, unknown>, ctx: CliContext): Promise<void> {\n // Surfaces help when called without a subcommand.\n ctx.logger.info(\n 'Usage: adt gcts <repo|branch|commit|log|objects|config> [...]',\n );\n ctx.logger.info(\n 'Run `adt gcts <subcommand> --help` for subcommand-specific options.',\n );\n return Promise.resolve();\n },\n};\n\nexport default gctsCommand;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/lib/client/gcts-client.ts","../src/lib/commands/gcts.ts"],"sourcesContent":["/**\n * Typed interface for the subset of the ADT client used by the gCTS CLI.\n *\n * The `CliContext.getAdtClient()` factory (provided by `adt-cli`) returns\n * `Promise<unknown>`. To keep the plugin self-contained, we declare the\n * exact shape we need here, structurally matching `client.adt.gcts.*` from\n * `@abapify/adt-contracts`.\n */\n\nimport type {\n GctsRepositoryEnvelope,\n GctsRepositoriesResponse,\n GctsBranchesResponse,\n GctsCreateBranchResponse,\n GctsLogResponse,\n GctsPullResponse,\n GctsObjectsResponse,\n GctsConfigResponse,\n GctsCreateRepositoryRequest,\n GctsCreateBranchRequest,\n GctsCommitRequest,\n GctsSetConfigRequest,\n} from '@abapify/adt-contracts';\n\nexport interface GctsClient {\n adt: {\n gcts: {\n repository: {\n list: () => Promise<GctsRepositoriesResponse>;\n get: (rid: string) => Promise<GctsRepositoryEnvelope>;\n create: (\n body: GctsCreateRepositoryRequest,\n ) => Promise<GctsRepositoryEnvelope>;\n delete: (rid: string) => Promise<Record<string, unknown>>;\n clone: (rid: string) => Promise<Record<string, unknown>>;\n pull: (rid: string) => Promise<GctsPullResponse>;\n push: (rid: string) => Promise<Record<string, unknown>>;\n checkout: (\n rid: string,\n currentBranch: string,\n targetBranch: string,\n ) => Promise<Record<string, unknown>>;\n log: (rid: string) => Promise<GctsLogResponse>;\n objects: (rid: string) => Promise<GctsObjectsResponse>;\n setItem: (\n rid: string,\n body: Record<string, unknown>,\n ) => Promise<Record<string, unknown>>;\n };\n branches: {\n list: (rid: string) => Promise<GctsBranchesResponse>;\n create: (\n rid: string,\n body: GctsCreateBranchRequest,\n ) => Promise<GctsCreateBranchResponse>;\n delete: (rid: string, name: string) => Promise<Record<string, unknown>>;\n switch: (\n rid: string,\n currentBranch: string,\n target: string,\n ) => Promise<Record<string, unknown>>;\n };\n commits: {\n commit: (\n rid: string,\n body: GctsCommitRequest,\n ) => Promise<Record<string, unknown>>;\n };\n config: {\n get: (rid: string, key: string) => Promise<GctsConfigResponse>;\n set: (\n rid: string,\n body: GctsSetConfigRequest,\n ) => Promise<Record<string, unknown>>;\n delete: (rid: string, key: string) => Promise<Record<string, unknown>>;\n };\n };\n };\n}\n\nimport type { CliContext } from '@abapify/adt-plugin';\n\n/**\n * Resolve a `GctsClient` from the CLI context, printing a friendly error and\n * exiting when no authenticated client is available (mirrors the pattern in\n * `@abapify/adt-atc`).\n */\nexport async function getGctsClient(ctx: CliContext): Promise<GctsClient> {\n if (!ctx.getAdtClient) {\n ctx.logger.error(\n '❌ ADT client not available. gCTS commands require authentication.',\n );\n ctx.logger.error(' Run: adt auth login');\n process.exit(1);\n }\n return (await ctx.getAdtClient()) as GctsClient;\n}\n","/**\n * `adt gcts` — top-level CLI command plugin.\n *\n * Mirrors sapcli's `sap gcts` surface:\n * - `adt gcts repo list / create / clone / delete / pull / push / checkout`\n * - `adt gcts branch list / create / switch / delete`\n * - `adt gcts commit <rid>`\n * - `adt gcts log <rid>`\n * - `adt gcts config <rid> get|set|unset [key] [value]`\n * - `adt gcts objects <rid>`\n *\n * All commands talk to `/sap/bc/cts_abapvcs/` via the typed contracts in\n * `@abapify/adt-contracts` (accessed as `client.adt.gcts.*`). JSON responses\n * are printed via `console.log` (respects `--json` flag where applicable).\n */\n\nimport type { CliCommandPlugin, CliContext } from '@abapify/adt-plugin';\nimport { getGctsClient } from '../client/gcts-client';\n\n// ── small helpers ──────────────────────────────────────────────────────────\n\n/** Stringify an object with 2-space indent (matches `sap gcts ... -f JSON`). */\nfunction json(x: unknown): string {\n return JSON.stringify(x, null, 2);\n}\n\n/** Safely coerce an `args` value to a string. */\nfunction str(v: unknown): string {\n return typeof v === 'string' ? v : '';\n}\n\n// ── repo subcommands ───────────────────────────────────────────────────────\n\nconst repoList: CliCommandPlugin = {\n name: 'list',\n description: 'List all gCTS repositories (GET /repository)',\n options: [{ flags: '--json', description: 'Output as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const res = await client.adt.gcts.repository.list();\n const repos = res.result ?? [];\n if (args.json) {\n console.log(json(repos));\n return;\n }\n if (repos.length === 0) {\n ctx.logger.info('No gCTS repositories found.');\n return;\n }\n for (const r of repos) {\n console.log(\n `${r.rid}\\t${r.status ?? ''}\\t${r.branch ?? ''}\\t${r.url ?? ''}`,\n );\n }\n },\n};\n\nconst repoCreate: CliCommandPlugin = {\n name: 'create',\n description: 'Create a new gCTS repository (POST /repository)',\n arguments: [\n { name: '<rid>', description: 'Repository ID' },\n { name: '<url>', description: 'Git URL (https://...)' },\n ],\n options: [\n {\n flags: '--vsid <vsid>',\n description: 'Virtual system ID',\n default: '6IT',\n },\n {\n flags: '--role <role>',\n description: 'Repository role (SOURCE|TARGET)',\n default: 'SOURCE',\n },\n {\n flags: '--type <type>',\n description: 'Repository type (GITHUB|GIT)',\n default: 'GITHUB',\n },\n {\n flags: '--starting-folder <dir>',\n description: 'Repository start dir',\n default: 'src/',\n },\n { flags: '--vcs-token <token>', description: 'VCS authentication token' },\n { flags: '--json', description: 'Output response as JSON' },\n ],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const url = str(args.url);\n const config: Array<{ key: string; value: string }> = [];\n if (args.startingFolder)\n config.push({ key: 'VCS_TARGET_DIR', value: str(args.startingFolder) });\n if (args.vcsToken)\n config.push({ key: 'CLIENT_VCS_AUTH_TOKEN', value: str(args.vcsToken) });\n\n const body = {\n repository: rid,\n data: {\n rid,\n name: rid,\n vsid: str(args.vsid) || '6IT',\n url,\n role: str(args.role) || 'SOURCE',\n type: str(args.type) || 'GITHUB',\n connection: 'ssl',\n ...(config.length > 0 ? { config } : {}),\n },\n };\n const res = await client.adt.gcts.repository.create(body);\n if (args.json) {\n console.log(json(res));\n return;\n }\n const repo = res.repository ?? res.result;\n ctx.logger.info(`✅ Created repository \"${rid}\"`);\n if (repo?.status) ctx.logger.info(` status: ${repo.status}`);\n },\n};\n\nconst repoClone: CliCommandPlugin = {\n name: 'clone',\n description:\n 'Clone repository on target system (POST /repository/<rid>/clone)',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [{ flags: '--json', description: 'Output response as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const res = await client.adt.gcts.repository.clone(rid);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`✅ Cloned repository \"${rid}\"`);\n },\n};\n\nconst repoDelete: CliCommandPlugin = {\n name: 'delete',\n description: 'Delete a gCTS repository (DELETE /repository/<rid>)',\n alias: 'rm',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [{ flags: '--json', description: 'Output response as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const res = await client.adt.gcts.repository.delete(rid);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`🗑 Deleted repository \"${rid}\"`);\n },\n};\n\nconst repoPull: CliCommandPlugin = {\n name: 'pull',\n description: 'Pull a gCTS repository (GET /repository/<rid>/pullByCommit)',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [{ flags: '--json', description: 'Output response as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const res = await client.adt.gcts.repository.pull(rid);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`✅ Pulled repository \"${rid}\"`);\n if (res.fromCommit && res.toCommit) {\n ctx.logger.info(` ${res.fromCommit} -> ${res.toCommit}`);\n } else if (res.toCommit) {\n ctx.logger.info(` HEAD = ${res.toCommit}`);\n }\n },\n};\n\nconst repoPush: CliCommandPlugin = {\n name: 'push',\n description: 'Push a gCTS repository (GET /repository/<rid>/push)',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [{ flags: '--json', description: 'Output response as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const res = await client.adt.gcts.repository.push(rid);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`✅ Pushed repository \"${rid}\"`);\n },\n};\n\nconst repoCheckout: CliCommandPlugin = {\n name: 'checkout',\n description:\n 'Check out a branch (GET /repository/<rid>/branches/<current>/switch?branch=X)',\n arguments: [\n { name: '<rid>', description: 'Repository ID' },\n { name: '<branch>', description: 'Target branch name' },\n {\n name: '[currentBranch]',\n description:\n 'Current branch (optional — inferred from repo if omitted; defaults to \"main\")',\n },\n ],\n options: [{ flags: '--json', description: 'Output response as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const target = str(args.branch);\n let current = str(args.currentBranch);\n\n if (!current) {\n // Discover current branch — mirrors sapcli's behaviour of reading\n // the repo `branch` property before building the switch URL.\n try {\n const repoRes = await client.adt.gcts.repository.get(rid);\n current = str(repoRes.result?.branch) || 'main';\n } catch {\n current = 'main';\n }\n }\n\n const res = await client.adt.gcts.repository.checkout(rid, current, target);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`✅ Switched \"${rid}\" from \"${current}\" to \"${target}\"`);\n },\n};\n\nconst repoGroup: CliCommandPlugin = {\n name: 'repo',\n description: 'Manage gCTS repositories',\n subcommands: [\n repoList,\n repoCreate,\n repoClone,\n repoDelete,\n repoPull,\n repoPush,\n repoCheckout,\n ],\n};\n\n// ── branch subcommands ─────────────────────────────────────────────────────\n\nconst branchList: CliCommandPlugin = {\n name: 'list',\n description: 'List branches of a repository (GET /branches)',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [\n { flags: '-r, --remote', description: 'Show remote branches only' },\n { flags: '-a, --all', description: 'Show all branches (local + remote)' },\n { flags: '--json', description: 'Output as JSON' },\n ],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const res = await client.adt.gcts.branches.list(rid);\n const all = res.branches ?? [];\n let filtered: typeof all;\n if (args.remote) {\n filtered = all.filter((b) => b.type === 'remote');\n } else if (args.all) {\n filtered = all;\n } else {\n filtered = all.filter((b) => b.type === 'local');\n }\n\n if (args.json) {\n console.log(json(filtered));\n return;\n }\n for (const b of filtered) {\n console.log(`${b.name}\\t${b.type ?? ''}\\t${b.ref ?? ''}`);\n }\n },\n};\n\nconst branchCreate: CliCommandPlugin = {\n name: 'create',\n description: 'Create a new branch (POST /branches)',\n arguments: [\n { name: '<rid>', description: 'Repository ID' },\n { name: '<name>', description: 'Branch name' },\n ],\n options: [\n { flags: '--local-only', description: 'Create a local branch only' },\n { flags: '--symbolic', description: 'Create a symbolic ref' },\n { flags: '--peeled', description: 'Create a peeled ref' },\n { flags: '--json', description: 'Output response as JSON' },\n ],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const name = str(args.name);\n const body = {\n branch: name,\n type: args.localOnly ? ('local' as const) : ('global' as const),\n isSymbolic: Boolean(args.symbolic),\n isPeeled: Boolean(args.peeled),\n };\n const res = await client.adt.gcts.branches.create(rid, body);\n if (args.json) {\n console.log(json(res));\n return;\n }\n const branchName = res.branch?.name ?? name;\n ctx.logger.info(`✅ Branch \"${branchName}\" created in \"${rid}\"`);\n },\n};\n\nconst branchDelete: CliCommandPlugin = {\n name: 'delete',\n description: 'Delete a branch (DELETE /branches/<name>)',\n arguments: [\n { name: '<rid>', description: 'Repository ID' },\n { name: '<name>', description: 'Branch name' },\n ],\n options: [{ flags: '--json', description: 'Output response as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const name = str(args.name);\n const res = await client.adt.gcts.branches.delete(rid, name);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`🗑 Deleted branch \"${name}\" in \"${rid}\"`);\n },\n};\n\nconst branchSwitch: CliCommandPlugin = {\n name: 'switch',\n description:\n 'Switch branches (GET /branches/<current>/switch?branch=<target>)',\n arguments: [\n { name: '<rid>', description: 'Repository ID' },\n { name: '<target>', description: 'Target branch name' },\n { name: '[current]', description: 'Current branch (defaults to \"main\")' },\n ],\n options: [{ flags: '--json', description: 'Output response as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const target = str(args.target);\n let current = str(args.current);\n if (!current) {\n try {\n const r = await client.adt.gcts.repository.get(rid);\n current = str(r.result?.branch) || 'main';\n } catch {\n current = 'main';\n }\n }\n const res = await client.adt.gcts.branches.switch(rid, current, target);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`✅ Switched to \"${target}\" in \"${rid}\"`);\n },\n};\n\nconst branchGroup: CliCommandPlugin = {\n name: 'branch',\n description: 'Manage gCTS branches',\n subcommands: [branchList, branchCreate, branchDelete, branchSwitch],\n};\n\n// ── top-level `commit` / `log` / `config` / `objects` ──────────────────────\n\nconst commitCmd: CliCommandPlugin = {\n name: 'commit',\n description: 'Commit a package or transport (POST /repository/<rid>/commit)',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [\n {\n flags: '-m, --message <text>',\n description: 'Commit message (default: auto-generated)',\n },\n {\n flags: '-d, --devc <pkg>',\n description: 'ABAP package name (defaults to <rid>)',\n },\n {\n flags: '--corrnr <tr>',\n description: 'Transport number (mutually exclusive with --devc)',\n },\n { flags: '--description <text>', description: 'Long commit description' },\n { flags: '--json', description: 'Output response as JSON' },\n ],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const corrnr = str(args.corrnr);\n\n const objects = corrnr\n ? [{ object: corrnr, type: 'TRANSPORT' }]\n : [\n {\n object: (str(args.devc) || rid).toUpperCase(),\n type: 'FULL_PACKAGE',\n },\n ];\n\n const defaultMsg = corrnr\n ? `Transport ${corrnr}`\n : `Export package ${(str(args.devc) || rid).toUpperCase()}`;\n\n const body = {\n message: str(args.message) || defaultMsg,\n autoPush: 'true' as const,\n objects,\n ...(args.description ? { description: str(args.description) } : {}),\n };\n\n const res = await client.adt.gcts.commits.commit(rid, body);\n if (args.json) {\n console.log(json(res));\n return;\n }\n const detail = corrnr\n ? `transport ${corrnr}`\n : `package ${objects[0].object}`;\n ctx.logger.info(`✅ Committed to \"${rid}\": ${detail}`);\n },\n};\n\nconst logCmd: CliCommandPlugin = {\n name: 'log',\n description:\n 'Show repository commit history (GET /repository/<rid>/getCommit)',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [{ flags: '--json', description: 'Output as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const res = await client.adt.gcts.repository.log(rid);\n const commits = res.commits ?? [];\n if (args.json) {\n console.log(json(commits));\n return;\n }\n for (const c of commits) {\n console.log(`commit ${c.id ?? ''}`);\n if (c.author) console.log(`Author: ${c.author} <${c.authorMail ?? ''}>`);\n if (c.date) console.log(`Date: ${c.date}`);\n console.log('');\n console.log(` ${c.message ?? ''}`);\n console.log('');\n }\n },\n};\n\nconst objectsCmd: CliCommandPlugin = {\n name: 'objects',\n description: 'List repository objects (GET /repository/<rid>/getObjects)',\n arguments: [{ name: '<rid>', description: 'Repository ID' }],\n options: [{ flags: '--json', description: 'Output as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const res = await client.adt.gcts.repository.objects(rid);\n const objs = res.objects ?? [];\n if (args.json) {\n console.log(json(objs));\n return;\n }\n for (const o of objs) {\n console.log(`${o.pgmid ?? ''}\\t${o.type ?? ''}\\t${o.object ?? ''}`);\n }\n },\n};\n\n// ── config subcommand helpers ──────────────────────────────────────────────\n\ntype GctsClient = Awaited<ReturnType<typeof getGctsClient>>;\ntype CliArgs = Parameters<NonNullable<CliCommandPlugin['execute']>>[0];\n\n/** `config list` — print the full repository configuration. */\nasync function configList(\n client: GctsClient,\n rid: string,\n args: CliArgs,\n): Promise<void> {\n const repo = await client.adt.gcts.repository.get(rid);\n const cfg = repo.result?.config ?? [];\n if (args.json) {\n console.log(json(cfg));\n return;\n }\n for (const c of cfg) {\n console.log(`${c.key}=${c.value ?? ''}`);\n }\n}\n\n/** `config get` — print a single config entry. */\nasync function configGet(\n client: GctsClient,\n rid: string,\n key: string,\n args: CliArgs,\n): Promise<void> {\n const res = await client.adt.gcts.config.get(rid, key);\n if (args.json) {\n console.log(json(res));\n return;\n }\n console.log(`${res.result?.key ?? key}=${res.result?.value ?? ''}`);\n}\n\n/** `config set` — write a config entry. */\nasync function configSet(\n client: GctsClient,\n rid: string,\n key: string,\n args: CliArgs,\n ctx: CliContext,\n): Promise<void> {\n const value = str(args.value);\n if (!value) {\n ctx.logger.error('❌ \"set\" requires a value argument.');\n process.exit(1);\n }\n const res = await client.adt.gcts.config.set(rid, { key, value });\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`✅ ${key}=${value}`);\n}\n\n/** `config unset` / `config delete` — remove a config entry. */\nasync function configUnset(\n client: GctsClient,\n rid: string,\n key: string,\n args: CliArgs,\n ctx: CliContext,\n): Promise<void> {\n const res = await client.adt.gcts.config.delete(rid, key);\n if (args.json) {\n console.log(json(res));\n return;\n }\n ctx.logger.info(`🗑 unset ${key}`);\n}\n\nconst configCmd: CliCommandPlugin = {\n name: 'config',\n description:\n 'Manage repository configuration (GET/POST/DELETE /repository/<rid>/config)',\n arguments: [\n { name: '<rid>', description: 'Repository ID' },\n {\n name: '[action]',\n description: 'get | set | unset | list (default: list)',\n default: 'list',\n },\n { name: '[key]', description: 'Config key (for get/set/unset)' },\n { name: '[value]', description: 'Config value (for set)' },\n ],\n options: [{ flags: '--json', description: 'Output as JSON' }],\n async execute(args, ctx) {\n const client = await getGctsClient(ctx);\n const rid = str(args.rid);\n const action = (str(args.action) || 'list').toLowerCase();\n const key = str(args.key);\n\n if (action === 'list') {\n await configList(client, rid, args);\n return;\n }\n\n if (!key) {\n ctx.logger.error(`❌ \"${action}\" requires a key argument.`);\n process.exit(1);\n }\n\n if (action === 'get') {\n await configGet(client, rid, key, args);\n return;\n }\n\n if (action === 'set') {\n await configSet(client, rid, key, args, ctx);\n return;\n }\n\n if (action === 'unset' || action === 'delete') {\n await configUnset(client, rid, key, args, ctx);\n return;\n }\n\n ctx.logger.error(\n `❌ Unknown config action \"${action}\" (expected: get|set|unset|list)`,\n );\n process.exit(1);\n },\n};\n\n// ── root ───────────────────────────────────────────────────────────────────\n\nexport const gctsCommand: CliCommandPlugin = {\n name: 'gcts',\n description: 'SAP gCTS (git-enabled CTS) operations (repo/branch/commit/...)',\n subcommands: [\n repoGroup,\n branchGroup,\n commitCmd,\n logCmd,\n objectsCmd,\n configCmd,\n ],\n execute(_args: Record<string, unknown>, ctx: CliContext): Promise<void> {\n // Surfaces help when called without a subcommand.\n ctx.logger.info(\n 'Usage: adt gcts <repo|branch|commit|log|objects|config> [...]',\n );\n ctx.logger.info(\n 'Run `adt gcts <subcommand> --help` for subcommand-specific options.',\n );\n return Promise.resolve();\n },\n};\n\nexport default gctsCommand;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abapify/adt-plugin-gcts-cli",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.39",
|
|
4
4
|
"description": "CLI command plugin for SAP gCTS (git-enabled CTS) — mirrors sapcli's `sap gcts`",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"cts_abapvcs"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@abapify/adt-plugin": "0.4.
|
|
31
|
-
"@abapify/adt-contracts": "0.4.
|
|
30
|
+
"@abapify/adt-plugin": "0.4.39",
|
|
31
|
+
"@abapify/adt-contracts": "0.4.39",
|
|
32
32
|
"zod": "^4.6.7"
|
|
33
33
|
},
|
|
34
34
|
"repository": {
|