@pipeline-builder/pipeline-manager 0.0.1
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/LICENSE +202 -0
- package/README.md +145 -0
- package/cdk.json +91 -0
- package/config.yml +94 -0
- package/dist/agent/ai.d.ts +48 -0
- package/dist/agent/ai.d.ts.map +1 -0
- package/dist/agent/ai.js +149 -0
- package/dist/agent/bootstrap.d.ts +39 -0
- package/dist/agent/bootstrap.d.ts.map +1 -0
- package/dist/agent/bootstrap.js +66 -0
- package/dist/agent/env-file.d.ts +17 -0
- package/dist/agent/env-file.d.ts.map +1 -0
- package/dist/agent/env-file.js +47 -0
- package/dist/agent/executor.d.ts +30 -0
- package/dist/agent/executor.d.ts.map +1 -0
- package/dist/agent/executor.js +60 -0
- package/dist/agent/health.d.ts +43 -0
- package/dist/agent/health.d.ts.map +1 -0
- package/dist/agent/health.js +109 -0
- package/dist/agent/ports.d.ts +26 -0
- package/dist/agent/ports.d.ts.map +1 -0
- package/dist/agent/ports.js +132 -0
- package/dist/agent/post-steps.d.ts +61 -0
- package/dist/agent/post-steps.d.ts.map +1 -0
- package/dist/agent/post-steps.js +131 -0
- package/dist/agent/prereqs.d.ts +26 -0
- package/dist/agent/prereqs.d.ts.map +1 -0
- package/dist/agent/prereqs.js +134 -0
- package/dist/agent/targets.d.ts +128 -0
- package/dist/agent/targets.d.ts.map +1 -0
- package/dist/agent/targets.js +265 -0
- package/dist/agent/tools.d.ts +13 -0
- package/dist/agent/tools.d.ts.map +1 -0
- package/dist/agent/tools.js +75 -0
- package/dist/agent/troubleshoot.d.ts +30 -0
- package/dist/agent/troubleshoot.d.ts.map +1 -0
- package/dist/agent/troubleshoot.js +87 -0
- package/dist/boilerplate.d.ts +3 -0
- package/dist/boilerplate.d.ts.map +1 -0
- package/dist/boilerplate.js +54 -0
- package/dist/cdk.json +91 -0
- package/dist/cli.d.ts +62 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +463 -0
- package/dist/commands/audit-stacks.d.ts +24 -0
- package/dist/commands/audit-stacks.d.ts.map +1 -0
- package/dist/commands/audit-stacks.js +182 -0
- package/dist/commands/audit-tokens.d.ts +21 -0
- package/dist/commands/audit-tokens.d.ts.map +1 -0
- package/dist/commands/audit-tokens.js +153 -0
- package/dist/commands/bootstrap.d.ts +11 -0
- package/dist/commands/bootstrap.d.ts.map +1 -0
- package/dist/commands/bootstrap.js +159 -0
- package/dist/commands/create-pat.d.ts +27 -0
- package/dist/commands/create-pat.d.ts.map +1 -0
- package/dist/commands/create-pat.js +194 -0
- package/dist/commands/create-pipeline.d.ts +12 -0
- package/dist/commands/create-pipeline.d.ts.map +1 -0
- package/dist/commands/create-pipeline.js +315 -0
- package/dist/commands/deploy.d.ts +15 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +157 -0
- package/dist/commands/entity-get.d.ts +51 -0
- package/dist/commands/entity-get.d.ts.map +1 -0
- package/dist/commands/entity-get.js +69 -0
- package/dist/commands/entity-list.d.ts +39 -0
- package/dist/commands/entity-list.d.ts.map +1 -0
- package/dist/commands/entity-list.js +88 -0
- package/dist/commands/get-pipeline.d.ts +13 -0
- package/dist/commands/get-pipeline.d.ts.map +1 -0
- package/dist/commands/get-pipeline.js +49 -0
- package/dist/commands/get-plugin.d.ts +13 -0
- package/dist/commands/get-plugin.d.ts.map +1 -0
- package/dist/commands/get-plugin.js +51 -0
- package/dist/commands/instantiate-template.d.ts +20 -0
- package/dist/commands/instantiate-template.d.ts.map +1 -0
- package/dist/commands/instantiate-template.js +274 -0
- package/dist/commands/list-pipelines.d.ts +20 -0
- package/dist/commands/list-pipelines.d.ts.map +1 -0
- package/dist/commands/list-pipelines.js +99 -0
- package/dist/commands/list-plugins.d.ts +20 -0
- package/dist/commands/list-plugins.d.ts.map +1 -0
- package/dist/commands/list-plugins.js +92 -0
- package/dist/commands/login.d.ts +21 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +174 -0
- package/dist/commands/new-plugin.d.ts +12 -0
- package/dist/commands/new-plugin.d.ts.map +1 -0
- package/dist/commands/new-plugin.js +129 -0
- package/dist/commands/org-export.d.ts +25 -0
- package/dist/commands/org-export.d.ts.map +1 -0
- package/dist/commands/org-export.js +100 -0
- package/dist/commands/provision.d.ts +122 -0
- package/dist/commands/provision.d.ts.map +1 -0
- package/dist/commands/provision.js +867 -0
- package/dist/commands/redrive-events.d.ts +24 -0
- package/dist/commands/redrive-events.d.ts.map +1 -0
- package/dist/commands/redrive-events.js +127 -0
- package/dist/commands/register.d.ts +38 -0
- package/dist/commands/register.d.ts.map +1 -0
- package/dist/commands/register.js +160 -0
- package/dist/commands/setup-events.d.ts +15 -0
- package/dist/commands/setup-events.d.ts.map +1 -0
- package/dist/commands/setup-events.js +168 -0
- package/dist/commands/status.d.ts +11 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +81 -0
- package/dist/commands/store-token.d.ts +26 -0
- package/dist/commands/store-token.d.ts.map +1 -0
- package/dist/commands/store-token.js +305 -0
- package/dist/commands/synth.d.ts +21 -0
- package/dist/commands/synth.d.ts.map +1 -0
- package/dist/commands/synth.js +158 -0
- package/dist/commands/upload-plugin.d.ts +21 -0
- package/dist/commands/upload-plugin.d.ts.map +1 -0
- package/dist/commands/upload-plugin.js +275 -0
- package/dist/commands/validate-plugin.d.ts +12 -0
- package/dist/commands/validate-plugin.d.ts.map +1 -0
- package/dist/commands/validate-plugin.js +175 -0
- package/dist/commands/validate-templates.d.ts +11 -0
- package/dist/commands/validate-templates.d.ts.map +1 -0
- package/dist/commands/validate-templates.js +116 -0
- package/dist/commands/version.d.ts +12 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +216 -0
- package/dist/config/cli.constants.d.ts +116 -0
- package/dist/config/cli.constants.d.ts.map +1 -0
- package/dist/config/cli.constants.js +194 -0
- package/dist/config.yml +94 -0
- package/dist/lambda/token-renew-handler.d.ts +2 -0
- package/dist/lambda/token-renew-handler.d.ts.map +1 -0
- package/dist/lambda/token-renew-handler.js +125 -0
- package/dist/templates/events-stack.json +174 -0
- package/dist/templates/token-renew-stack.json +122 -0
- package/dist/types/config.d.ts +53 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +4 -0
- package/dist/types/error.d.ts +61 -0
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/error.js +35 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/pipeline-template.d.ts +48 -0
- package/dist/types/pipeline-template.d.ts.map +1 -0
- package/dist/types/pipeline-template.js +4 -0
- package/dist/types/pipeline.d.ts +121 -0
- package/dist/types/pipeline.d.ts.map +1 -0
- package/dist/types/pipeline.js +4 -0
- package/dist/types/plugin.d.ts +135 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +4 -0
- package/dist/utils/api-client.d.ts +26 -0
- package/dist/utils/api-client.d.ts.map +1 -0
- package/dist/utils/api-client.js +151 -0
- package/dist/utils/audit-log.d.ts +8 -0
- package/dist/utils/audit-log.d.ts.map +1 -0
- package/dist/utils/audit-log.js +57 -0
- package/dist/utils/auth-guard.d.ts +20 -0
- package/dist/utils/auth-guard.d.ts.map +1 -0
- package/dist/utils/auth-guard.js +22 -0
- package/dist/utils/auth-utils.d.ts +68 -0
- package/dist/utils/auth-utils.d.ts.map +1 -0
- package/dist/utils/auth-utils.js +77 -0
- package/dist/utils/aws-env.d.ts +21 -0
- package/dist/utils/aws-env.d.ts.map +1 -0
- package/dist/utils/aws-env.js +34 -0
- package/dist/utils/aws-secrets.d.ts +48 -0
- package/dist/utils/aws-secrets.d.ts.map +1 -0
- package/dist/utils/aws-secrets.js +115 -0
- package/dist/utils/banner.d.ts +19 -0
- package/dist/utils/banner.d.ts.map +1 -0
- package/dist/utils/banner.js +52 -0
- package/dist/utils/cdk-utils.d.ts +74 -0
- package/dist/utils/cdk-utils.d.ts.map +1 -0
- package/dist/utils/cdk-utils.js +152 -0
- package/dist/utils/command-utils.d.ts +75 -0
- package/dist/utils/command-utils.d.ts.map +1 -0
- package/dist/utils/command-utils.js +155 -0
- package/dist/utils/config-loader.d.ts +33 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +154 -0
- package/dist/utils/cron.d.ts +28 -0
- package/dist/utils/cron.d.ts.map +1 -0
- package/dist/utils/cron.js +119 -0
- package/dist/utils/deploy-runner.d.ts +38 -0
- package/dist/utils/deploy-runner.d.ts.map +1 -0
- package/dist/utils/deploy-runner.js +112 -0
- package/dist/utils/error-handler.d.ts +29 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +302 -0
- package/dist/utils/list-command-utils.d.ts +23 -0
- package/dist/utils/list-command-utils.d.ts.map +1 -0
- package/dist/utils/list-command-utils.js +57 -0
- package/dist/utils/output-utils.d.ts +40 -0
- package/dist/utils/output-utils.d.ts.map +1 -0
- package/dist/utils/output-utils.js +250 -0
- package/dist/utils/pipeline-config.d.ts +33 -0
- package/dist/utils/pipeline-config.d.ts.map +1 -0
- package/dist/utils/pipeline-config.js +55 -0
- package/dist/utils/platform-secret.d.ts +27 -0
- package/dist/utils/platform-secret.d.ts.map +1 -0
- package/dist/utils/platform-secret.js +92 -0
- package/dist/utils/plugin-resolver.d.ts +17 -0
- package/dist/utils/plugin-resolver.d.ts.map +1 -0
- package/dist/utils/plugin-resolver.js +101 -0
- package/dist/utils/preflight.d.ts +26 -0
- package/dist/utils/preflight.d.ts.map +1 -0
- package/dist/utils/preflight.js +59 -0
- package/dist/utils/rate-limiter.d.ts +15 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +164 -0
- package/dist/utils/registry.d.ts +86 -0
- package/dist/utils/registry.d.ts.map +1 -0
- package/dist/utils/registry.js +140 -0
- package/dist/utils/response-utils.d.ts +21 -0
- package/dist/utils/response-utils.d.ts.map +1 -0
- package/dist/utils/response-utils.js +70 -0
- package/dist/utils/tls.d.ts +52 -0
- package/dist/utils/tls.d.ts.map +1 -0
- package/dist/utils/tls.js +88 -0
- package/package.json +181 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { type OutputFormat } from '../config/cli.constants.js';
|
|
3
|
+
import { ApiClient } from '../utils/api-client.js';
|
|
4
|
+
/** Options common to the single-entity `get` commands. */
|
|
5
|
+
export interface GetEntityOptions {
|
|
6
|
+
id: string;
|
|
7
|
+
format: OutputFormat;
|
|
8
|
+
output?: string;
|
|
9
|
+
verifySsl?: boolean;
|
|
10
|
+
showProps?: boolean;
|
|
11
|
+
showMetadata?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Per-entity configuration for {@link runGetEntity}. Captures everything that
|
|
15
|
+
* differs between `get-pipeline` and `get-plugin`; the surrounding scaffold
|
|
16
|
+
* (header, SSL warning, fetch, summary table, execution summary, file output,
|
|
17
|
+
* error handling) is identical and lives in the runner.
|
|
18
|
+
*/
|
|
19
|
+
export interface GetEntitySpec<TEntity extends {
|
|
20
|
+
id: string;
|
|
21
|
+
}> {
|
|
22
|
+
/** Title-case entity label, e.g. `'Pipeline'`. Drives headers and messages. */
|
|
23
|
+
label: string;
|
|
24
|
+
/** Response-envelope key the entity is nested under, e.g. `'pipeline'`. */
|
|
25
|
+
responseKey: string;
|
|
26
|
+
/** Build the single-entity GET URL from the authenticated client. */
|
|
27
|
+
urlFor: (client: ApiClient, id: string) => string;
|
|
28
|
+
/** Ordered key/value summary rendered as a table. */
|
|
29
|
+
summary: (entity: TEntity) => Record<string, unknown>;
|
|
30
|
+
/**
|
|
31
|
+
* Optional extra JSON block shown after the summary (pipeline properties /
|
|
32
|
+
* plugin metadata). Return `null` to omit.
|
|
33
|
+
*/
|
|
34
|
+
extra?: (options: GetEntityOptions, entity: TEntity) => {
|
|
35
|
+
infoLabel: string;
|
|
36
|
+
payload: object;
|
|
37
|
+
} | null;
|
|
38
|
+
/** Command name for error-handler context, e.g. `'get-pipeline'`. */
|
|
39
|
+
commandName: string;
|
|
40
|
+
/** Key under which the id is reported in error context, e.g. `'pipelineId'`. */
|
|
41
|
+
idContextKey: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Shared implementation of the single-entity `get` commands. Fetches one entity
|
|
45
|
+
* by ID, prints a summary (and optional properties/metadata block), and writes
|
|
46
|
+
* the raw entity in the requested format.
|
|
47
|
+
*/
|
|
48
|
+
export declare function runGetEntity<TEntity extends {
|
|
49
|
+
id: string;
|
|
50
|
+
}>(program: Command, options: GetEntityOptions, spec: GetEntitySpec<TEntity>): Promise<void>;
|
|
51
|
+
//# sourceMappingURL=entity-get.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-get.d.ts","sourceRoot":"","sources":["../../src/commands/entity-get.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAQnD,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IAC3D,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,qDAAqD;IACrD,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,KAAK;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtG,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC/D,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CA4Df"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import pico from 'picocolors';
|
|
5
|
+
import {} from '../config/cli.constants.js';
|
|
6
|
+
import { ApiClient } from '../utils/api-client.js';
|
|
7
|
+
import { createAuthenticatedClient, printCommandHeader, printExecutionSummary, printSslWarning, validateEntityId } from '../utils/command-utils.js';
|
|
8
|
+
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
9
|
+
import { outputData, printError, printInfo, printKeyValue, printSection, printSuccess } from '../utils/output-utils.js';
|
|
10
|
+
import { extractSingleResponse } from '../utils/response-utils.js';
|
|
11
|
+
const { dim } = pico;
|
|
12
|
+
/**
|
|
13
|
+
* Shared implementation of the single-entity `get` commands. Fetches one entity
|
|
14
|
+
* by ID, prints a summary (and optional properties/metadata block), and writes
|
|
15
|
+
* the raw entity in the requested format.
|
|
16
|
+
*/
|
|
17
|
+
export async function runGetEntity(program, options, spec) {
|
|
18
|
+
const executionId = printCommandHeader(`Get ${spec.label}`);
|
|
19
|
+
const lower = spec.label.toLowerCase();
|
|
20
|
+
try {
|
|
21
|
+
printSslWarning(options.verifySsl);
|
|
22
|
+
printInfo('Request parameters', {
|
|
23
|
+
id: options.id,
|
|
24
|
+
format: options.format,
|
|
25
|
+
output: options.output || '(console)',
|
|
26
|
+
});
|
|
27
|
+
const entityId = validateEntityId(options.id, spec.label);
|
|
28
|
+
const client = createAuthenticatedClient(options);
|
|
29
|
+
console.log('');
|
|
30
|
+
printSection(`Fetching ${spec.label}`);
|
|
31
|
+
const startTime = Date.now();
|
|
32
|
+
const response = await client.get(spec.urlFor(client, entityId));
|
|
33
|
+
const duration = Date.now() - startTime;
|
|
34
|
+
const entity = extractSingleResponse(response, spec.responseKey, 'id');
|
|
35
|
+
if (!entity) {
|
|
36
|
+
printError(`No ${lower} returned from API`);
|
|
37
|
+
throw new Error(`Failed to retrieve ${lower} with ID: ${entityId}`);
|
|
38
|
+
}
|
|
39
|
+
console.log('');
|
|
40
|
+
printSection(`${spec.label} Retrieved Successfully`);
|
|
41
|
+
printKeyValue(spec.summary(entity));
|
|
42
|
+
const extra = spec.extra?.(options, entity);
|
|
43
|
+
if (extra) {
|
|
44
|
+
console.log('');
|
|
45
|
+
printInfo(extra.infoLabel, { keys: Object.keys(extra.payload).length });
|
|
46
|
+
console.log(dim('─'.repeat(process.stdout.columns || 80)));
|
|
47
|
+
console.log(JSON.stringify(extra.payload, null, 2));
|
|
48
|
+
console.log(dim('─'.repeat(process.stdout.columns || 80)));
|
|
49
|
+
}
|
|
50
|
+
printExecutionSummary(executionId, duration);
|
|
51
|
+
outputData(entity, {
|
|
52
|
+
format: options.format,
|
|
53
|
+
file: options.output,
|
|
54
|
+
silent: false,
|
|
55
|
+
});
|
|
56
|
+
if (options.output) {
|
|
57
|
+
console.log('');
|
|
58
|
+
printSuccess(`${spec.label} data saved`, { path: options.output });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
handleError(error, ERROR_CODES.API_REQUEST, {
|
|
63
|
+
debug: program.opts().debug,
|
|
64
|
+
exit: true,
|
|
65
|
+
context: { command: spec.commandName, executionId, [spec.idContextKey]: options.id },
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9lbnRpdHktZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFxQixNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEosT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBc0NyQjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQ2hDLE9BQWdCLEVBQ2hCLE9BQXlCLEVBQ3pCLElBQTRCO0lBRTVCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDNUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUV2QyxJQUFJLENBQUM7UUFDSCxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLFNBQVMsQ0FBQyxvQkFB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T0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDckUsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztZQUMzQixJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1NBQ3JGLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyB0eXBlIE91dHB1dEZvcm1hdCB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IEFwaUNsaWVudCB9IGZyb20gJy4uL3V0aWxzL2FwaS1jbGllbnQuanMnO1xuaW1wb3J0IHsgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudCwgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludEV4ZWN1dGlvblN1bW1hcnksIHByaW50U3NsV2FybmluZywgdmFsaWRhdGVFbnRpdHlJZCB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBvdXRwdXREYXRhLCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IGV4dHJhY3RTaW5nbGVSZXNwb25zZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLXV0aWxzLmpzJztcblxuY29uc3QgeyBkaW0gfSA9IHBpY287XG5cbi8qKiBPcHRpb25zIGNvbW1vbiB0byB0aGUgc2luZ2xlLWVudGl0eSBgZ2V0YCBjb21tYW5kcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RW50aXR5T3B0aW9ucyB7XG4gIGlkOiBzdHJpbmc7XG4gIGZvcm1hdDogT3V0cHV0Rm9ybWF0O1xuICBvdXRwdXQ/OiBzdHJpbmc7XG4gIHZlcmlmeVNzbD86IGJvb2xlYW47XG4gIHNob3dQcm9wcz86IGJvb2xlYW47XG4gIHNob3dNZXRhZGF0YT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGVyLWVudGl0eSBjb25maWd1cmF0aW9uIGZvciB7QGxpbmsgcnVuR2V0RW50aXR5fS4gQ2FwdHVyZXMgZXZlcnl0aGluZyB0aGF0XG4gKiBkaWZmZXJzIGJldHdlZW4gYGdldC1waXBlbGluZWAgYW5kIGBnZXQtcGx1Z2luYDsgdGhlIHN1cnJvdW5kaW5nIHNjYWZmb2xkXG4gKiAoaGVhZGVyLCBTU0wgd2FybmluZywgZmV0Y2gsIHN1bW1hcnkgdGFibGUsIGV4ZWN1dGlvbiBzdW1tYXJ5LCBmaWxlIG91dHB1dCxcbiAqIGVycm9yIGhhbmRsaW5nKSBpcyBpZGVudGljYWwgYW5kIGxpdmVzIGluIHRoZSBydW5uZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RW50aXR5U3BlYzxURW50aXR5IGV4dGVuZHMgeyBpZDogc3RyaW5nIH0+IHtcbiAgLyoqIFRpdGxlLWNhc2UgZW50aXR5IGxhYmVsLCBlLmcuIGAnUGlwZWxpbmUnYC4gRHJpdmVzIGhlYWRlcnMgYW5kIG1lc3NhZ2VzLiAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogUmVzcG9uc2UtZW52ZWxvcGUga2V5IHRoZSBlbnRpdHkgaXMgbmVzdGVkIHVuZGVyLCBlLmcuIGAncGlwZWxpbmUnYC4gKi9cbiAgcmVzcG9uc2VLZXk6IHN0cmluZztcbiAgLyoqIEJ1aWxkIHRoZSBzaW5nbGUtZW50aXR5IEdFVCBVUkwgZnJvbSB0aGUgYXV0aGVudGljYXRlZCBjbGllbnQuICovXG4gIHVybEZvcjogKGNsaWVudDogQXBpQ2xpZW50LCBpZDogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIC8qKiBPcmRlcmVkIGtleS92YWx1ZSBzdW1tYXJ5IHJlbmRlcmVkIGFzIGEgdGFibGUuICovXG4gIHN1bW1hcnk6IChlbnRpdHk6IFRFbnRpdHkpID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKipcbiAgICogT3B0aW9uYWwgZXh0cmEgSlNPTiBibG9jayBzaG93biBhZnRlciB0aGUgc3VtbWFyeSAocGlwZWxpbmUgcHJvcGVydGllcyAvXG4gICAqIHBsdWdpbiBtZXRhZGF0YSkuIFJldHVybiBgbnVsbGAgdG8gb21pdC5cbiAgICovXG4gIGV4dHJhPzogKG9wdGlvbnM6IEdldEVudGl0eU9wdGlvbnMsIGVudGl0eTogVEVudGl0eSkgPT4geyBpbmZvTGFiZWw6IHN0cmluZzsgcGF5bG9hZDogb2JqZWN0IH0gfCBudWxsO1xuICAvKiogQ29tbWFuZCBuYW1lIGZvciBlcnJvci1oYW5kbGVyIGNvbnRleHQsIGUuZy4gYCdnZXQtcGlwZWxpbmUnYC4gKi9cbiAgY29tbWFuZE5hbWU6IHN0cmluZztcbiAgLyoqIEtleSB1bmRlciB3aGljaCB0aGUgaWQgaXMgcmVwb3J0ZWQgaW4gZXJyb3IgY29udGV4dCwgZS5nLiBgJ3BpcGVsaW5lSWQnYC4gKi9cbiAgaWRDb250ZXh0S2V5OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU2hhcmVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzaW5nbGUtZW50aXR5IGBnZXRgIGNvbW1hbmRzLiBGZXRjaGVzIG9uZSBlbnRpdHlcbiAqIGJ5IElELCBwcmludHMgYSBzdW1tYXJ5IChhbmQgb3B0aW9uYWwgcHJvcGVydGllcy9tZXRhZGF0YSBibG9jayksIGFuZCB3cml0ZXNcbiAqIHRoZSByYXcgZW50aXR5IGluIHRoZSByZXF1ZXN0ZWQgZm9ybWF0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuR2V0RW50aXR5PFRFbnRpdHkgZXh0ZW5kcyB7IGlkOiBzdHJpbmcgfT4oXG4gIHByb2dyYW06IENvbW1hbmQsXG4gIG9wdGlvbnM6IEdldEVudGl0eU9wdGlvbnMsXG4gIHNwZWM6IEdldEVudGl0eVNwZWM8VEVudGl0eT4sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoYEdldCAke3NwZWMubGFiZWx9YCk7XG4gIGNvbnN0IGxvd2VyID0gc3BlYy5sYWJlbC50b0xvd2VyQ2FzZSgpO1xuXG4gIHRyeSB7XG4gICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcbiAgICBwcmludEluZm8oJ1JlcXVlc3QgcGFyYW1ldGVycycsIHtcbiAgICAgIGlkOiBvcHRpb25zLmlkLFxuICAgICAgZm9ybWF0OiBvcHRpb25zLmZvcm1hdCxcbiAgICAgIG91dHB1dDogb3B0aW9ucy5vdXRwdXQgfHwgJyhjb25zb2xlKScsXG4gICAgfSk7XG5cbiAgICBjb25zdCBlbnRpdHlJZCA9IHZhbGlkYXRlRW50aXR5SWQob3B0aW9ucy5pZCwgc3BlYy5sYWJlbCk7XG4gICAgY29uc3QgY2xpZW50ID0gY3JlYXRlQXV0aGVudGljYXRlZENsaWVudChvcHRpb25zKTtcblxuICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICBwcmludFNlY3Rpb24oYEZldGNoaW5nICR7c3BlYy5sYWJlbH1gKTtcblxuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KHNwZWMudXJsRm9yKGNsaWVudCwgZW50aXR5SWQpKTtcbiAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7XG5cbiAgICBjb25zdCBlbnRpdHkgPSBleHRyYWN0U2luZ2xlUmVzcG9uc2U8VEVudGl0eT4ocmVzcG9uc2UsIHNwZWMucmVzcG9uc2VLZXksICdpZCcpO1xuICAgIGlmICghZW50aXR5KSB7XG4gICAgICBwcmludEVycm9yKGBObyAke2xvd2VyfSByZXR1cm5lZCBmcm9tIEFQSWApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcmV0cmlldmUgJHtsb3dlcn0gd2l0aCBJRDogJHtlbnRpdHlJZH1gKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgcHJpbnRTZWN0aW9uKGAke3NwZWMubGFiZWx9IFJldHJpZXZlZCBTdWNjZXNzZnVsbHlgKTtcbiAgICBwcmludEtleVZhbHVlKHNwZWMuc3VtbWFyeShlbnRpdHkpKTtcblxuICAgIGNvbnN0IGV4dHJhID0gc3BlYy5leHRyYT8uKG9wdGlvbnMsIGVudGl0eSk7XG4gICAgaWYgKGV4dHJhKSB7XG4gICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICBwcmludEluZm8oZXh0cmEuaW5mb0xhYmVsLCB7IGtleXM6IE9iamVjdC5rZXlzKGV4dHJhLnBheWxvYWQpLmxlbmd0aCB9KTtcbiAgICAgIGNvbnNvbGUubG9nKGRpbSgn4pSAJy5yZXBlYXQocHJvY2Vzcy5zdGRvdXQuY29sdW1ucyB8fCA4MCkpKTtcbiAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGV4dHJhLnBheWxvYWQsIG51bGwsIDIpKTtcbiAgICAgIGNvbnNvbGUubG9nKGRpbSgn4pSAJy5yZXBlYXQocHJvY2Vzcy5zdGRvdXQuY29sdW1ucyB8fCA4MCkpKTtcbiAgICB9XG5cbiAgICBwcmludEV4ZWN1dGlvblN1bW1hcnkoZXhlY3V0aW9uSWQsIGR1cmF0aW9uKTtcblxuICAgIG91dHB1dERhdGEoZW50aXR5LCB7XG4gICAgICBmb3JtYXQ6IG9wdGlvbnMuZm9ybWF0LFxuICAgICAgZmlsZTogb3B0aW9ucy5vdXRwdXQsXG4gICAgICBzaWxlbnQ6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnMub3V0cHV0KSB7XG4gICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICBwcmludFN1Y2Nlc3MoYCR7c3BlYy5sYWJlbH0gZGF0YSBzYXZlZGAsIHsgcGF0aDogb3B0aW9ucy5vdXRwdXQgfSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHsgY29tbWFuZDogc3BlYy5jb21tYW5kTmFtZSwgZXhlY3V0aW9uSWQsIFtzcGVjLmlkQ29udGV4dEtleV06IG9wdGlvbnMuaWQgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { type OutputFormat } from '../config/cli.constants.js';
|
|
3
|
+
import { type Config } from '../utils/config-loader.js';
|
|
4
|
+
import { type CommonFilterParams } from '../utils/list-command-utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* Per-entity configuration for {@link runListEntity}. Captures everything that
|
|
7
|
+
* differs between `list-pipelines` and `list-plugins`; the surrounding scaffold
|
|
8
|
+
* (header, filter display, pagination, query, results summary, output, perf
|
|
9
|
+
* metrics, error handling) is identical and lives in the runner.
|
|
10
|
+
*/
|
|
11
|
+
export interface ListEntitySpec<TItem, TFilter extends CommonFilterParams> {
|
|
12
|
+
/** Plural title-case label, e.g. `'Pipelines'`. Drives headers and messages. */
|
|
13
|
+
labelPlural: string;
|
|
14
|
+
/** Response-envelope key the items are nested under, e.g. `'pipelines'`. */
|
|
15
|
+
responseKey: string;
|
|
16
|
+
/** Build the list URL from the resolved config. */
|
|
17
|
+
listUrl: (config: Config) => string;
|
|
18
|
+
/** Merge entity-specific filters onto the common (pagination/sort) base. */
|
|
19
|
+
buildFilters: (options: Record<string, unknown>, base: CommonFilterParams) => TFilter;
|
|
20
|
+
/** Human-readable active-filter map shown before the query. */
|
|
21
|
+
activeFilters: (filters: TFilter) => Record<string, unknown>;
|
|
22
|
+
/** Optional table-only statistics block; return `null` to omit. */
|
|
23
|
+
statistics?: (items: TItem[]) => Record<string, unknown> | null;
|
|
24
|
+
/** Rows to serialize (full items when the show-flag is set, else a slim map). */
|
|
25
|
+
rows: (items: TItem[], options: Record<string, unknown>) => unknown;
|
|
26
|
+
/** Command name for error-handler context, e.g. `'list-pipelines'`. */
|
|
27
|
+
commandName: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Shared implementation of the list commands. Applies common + entity-specific
|
|
31
|
+
* filters, queries the API, prints a results summary (and optional statistics),
|
|
32
|
+
* and writes the rows in the requested format.
|
|
33
|
+
*/
|
|
34
|
+
export declare function runListEntity<TItem, TFilter extends CommonFilterParams>(program: Command, options: Record<string, unknown> & {
|
|
35
|
+
format?: OutputFormat;
|
|
36
|
+
output?: string;
|
|
37
|
+
verifySsl?: boolean;
|
|
38
|
+
}, spec: ListEntitySpec<TItem, TFilter>): Promise<void>;
|
|
39
|
+
//# sourceMappingURL=entity-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-list.d.ts","sourceRoot":"","sources":["../../src/commands/entity-list.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/E,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAsB,KAAK,kBAAkB,EAA6C,MAAM,gCAAgC,CAAC;AAIxI;;;;;GAKG;AACH,MAAM,WAAW,cAAc,CAAC,KAAK,EAAE,OAAO,SAAS,kBAAkB;IACvE,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,4EAA4E;IAC5E,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC;IACtF,+DAA+D;IAC/D,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,mEAAmE;IACnE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,iFAAiF;IACjF,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;IACpE,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,OAAO,SAAS,kBAAkB,EAC3E,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,EAClG,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAuFf"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import { formatDuration } from '../config/cli.constants.js';
|
|
5
|
+
import { createAuthenticatedClient, printCommandHeader, printSslWarning } from '../utils/command-utils.js';
|
|
6
|
+
import {} from '../utils/config-loader.js';
|
|
7
|
+
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
8
|
+
import { buildCommonFilters, displayListResults, displayPaginationInfo } from '../utils/list-command-utils.js';
|
|
9
|
+
import { outputData, printInfo, printKeyValue, printSection } from '../utils/output-utils.js';
|
|
10
|
+
import { extractListResponse } from '../utils/response-utils.js';
|
|
11
|
+
/**
|
|
12
|
+
* Shared implementation of the list commands. Applies common + entity-specific
|
|
13
|
+
* filters, queries the API, prints a results summary (and optional statistics),
|
|
14
|
+
* and writes the rows in the requested format.
|
|
15
|
+
*/
|
|
16
|
+
export async function runListEntity(program, options, spec) {
|
|
17
|
+
const executionId = printCommandHeader(`List ${spec.labelPlural}`, `Query ${spec.labelPlural}`);
|
|
18
|
+
const startTime = Date.now();
|
|
19
|
+
try {
|
|
20
|
+
const filterParams = spec.buildFilters(options, buildCommonFilters(options));
|
|
21
|
+
// Display active filters
|
|
22
|
+
const activeFilters = spec.activeFilters(filterParams);
|
|
23
|
+
if (Object.keys(activeFilters).length > 0) {
|
|
24
|
+
printInfo('Active Filters');
|
|
25
|
+
printKeyValue(activeFilters);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
printInfo(`No filters applied - fetching all ${spec.labelPlural.toLowerCase()}`);
|
|
29
|
+
}
|
|
30
|
+
displayPaginationInfo(filterParams);
|
|
31
|
+
// Security warning for SSL verification disabled
|
|
32
|
+
printSslWarning(options.verifySsl);
|
|
33
|
+
// Create authenticated API client
|
|
34
|
+
const client = createAuthenticatedClient(options);
|
|
35
|
+
const config = client.getConfig();
|
|
36
|
+
// Query
|
|
37
|
+
console.log('');
|
|
38
|
+
printSection(`Querying ${spec.labelPlural}`);
|
|
39
|
+
printInfo('Sending request to API...');
|
|
40
|
+
const requestStart = Date.now();
|
|
41
|
+
const response = await client.get(spec.listUrl(config), filterParams);
|
|
42
|
+
const requestDuration = Date.now() - requestStart;
|
|
43
|
+
// Handle response
|
|
44
|
+
const { items, total, hasMore } = extractListResponse(response, spec.responseKey);
|
|
45
|
+
console.log('');
|
|
46
|
+
printSection('✓ Query Complete');
|
|
47
|
+
// Display results summary
|
|
48
|
+
displayListResults(items, total, hasMore, spec.labelPlural, requestDuration, filterParams);
|
|
49
|
+
// Display statistics
|
|
50
|
+
if (items.length > 0 && options.format === 'table') {
|
|
51
|
+
const stats = spec.statistics?.(items);
|
|
52
|
+
if (stats) {
|
|
53
|
+
console.log('');
|
|
54
|
+
printInfo('Statistics');
|
|
55
|
+
printKeyValue(stats);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Output data in requested format
|
|
59
|
+
console.log('');
|
|
60
|
+
if (options.output) {
|
|
61
|
+
printInfo('Saving to file', { path: options.output, format: options.format });
|
|
62
|
+
}
|
|
63
|
+
outputData(spec.rows(items, options), {
|
|
64
|
+
format: options.format,
|
|
65
|
+
file: options.output,
|
|
66
|
+
});
|
|
67
|
+
// Performance metrics
|
|
68
|
+
console.log('');
|
|
69
|
+
printKeyValue({
|
|
70
|
+
'Execution ID': executionId,
|
|
71
|
+
'Total Duration': formatDuration(Date.now() - startTime),
|
|
72
|
+
});
|
|
73
|
+
console.log('');
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
handleError(error, ERROR_CODES.API_REQUEST, {
|
|
77
|
+
debug: program.opts().debug,
|
|
78
|
+
exit: true,
|
|
79
|
+
context: {
|
|
80
|
+
command: spec.commandName,
|
|
81
|
+
executionId,
|
|
82
|
+
filters: options,
|
|
83
|
+
verifySsl: options.verifySsl,
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZW50aXR5LWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQXFCLE1BQU0sNEJBQTRCLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNHLE9BQU8sRUFBZSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUEyQixrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hJLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQTJCakU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYSxDQUNqQyxPQUFnQixFQUNoQixPQUFrRyxFQUNsRyxJQUFvQztJQUVwQyxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUU3QixJQUFJLENBQUM7UUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FB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QyxFQUFFLENBQUMsQ0FBQztRQUNoQixhQUFhLENBQUM7WUFDWixjQUFjLEVBQUUsV0FBVztZQUMzQixnQkFBZ0IsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztTQUN6RCxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztZQUMzQixJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRTtnQkFDUCxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQ3pCLFdBQVc7Z0JBQ1gsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUzthQUM3QjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZm9ybWF0RHVyYXRpb24sIHR5cGUgT3V0cHV0Rm9ybWF0IH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudCwgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludFNzbFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IHR5cGUgQ29uZmlnIH0gZnJvbSAnLi4vdXRpbHMvY29uZmlnLWxvYWRlci5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IGJ1aWxkQ29tbW9uRmlsdGVycywgdHlwZSBDb21tb25GaWx0ZXJQYXJhbXMsIGRpc3BsYXlMaXN0UmVzdWx0cywgZGlzcGxheVBhZ2luYXRpb25JbmZvIH0gZnJvbSAnLi4vdXRpbHMvbGlzdC1jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IG91dHB1dERhdGEsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IGV4dHJhY3RMaXN0UmVzcG9uc2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS11dGlscy5qcyc7XG5cbi8qKlxuICogUGVyLWVudGl0eSBjb25maWd1cmF0aW9uIGZvciB7QGxpbmsgcnVuTGlzdEVudGl0eX0uIENhcHR1cmVzIGV2ZXJ5dGhpbmcgdGhhdFxuICogZGlmZmVycyBiZXR3ZWVuIGBsaXN0LXBpcGVsaW5lc2AgYW5kIGBsaXN0LXBsdWdpbnNgOyB0aGUgc3Vycm91bmRpbmcgc2NhZmZvbGRcbiAqIChoZWFkZXIsIGZpbHRlciBkaXNwbGF5LCBwYWdpbmF0aW9uLCBxdWVyeSwgcmVzdWx0cyBzdW1tYXJ5LCBvdXRwdXQsIHBlcmZcbiAqIG1ldHJpY3MsIGVycm9yIGhhbmRsaW5nKSBpcyBpZGVudGljYWwgYW5kIGxpdmVzIGluIHRoZSBydW5uZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEVudGl0eVNwZWM8VEl0ZW0sIFRGaWx0ZXIgZXh0ZW5kcyBDb21tb25GaWx0ZXJQYXJhbXM+IHtcbiAgLyoqIFBsdXJhbCB0aXRsZS1jYXNlIGxhYmVsLCBlLmcuIGAnUGlwZWxpbmVzJ2AuIERyaXZlcyBoZWFkZXJzIGFuZCBtZXNzYWdlcy4gKi9cbiAgbGFiZWxQbHVyYWw6IHN0cmluZztcbiAgLyoqIFJlc3BvbnNlLWVudmVsb3BlIGtleSB0aGUgaXRlbXMgYXJlIG5lc3RlZCB1bmRlciwgZS5nLiBgJ3BpcGVsaW5lcydgLiAqL1xuICByZXNwb25zZUtleTogc3RyaW5nO1xuICAvKiogQnVpbGQgdGhlIGxpc3QgVVJMIGZyb20gdGhlIHJlc29sdmVkIGNvbmZpZy4gKi9cbiAgbGlzdFVybDogKGNvbmZpZzogQ29uZmlnKSA9PiBzdHJpbmc7XG4gIC8qKiBNZXJnZSBlbnRpdHktc3BlY2lmaWMgZmlsdGVycyBvbnRvIHRoZSBjb21tb24gKHBhZ2luYXRpb24vc29ydCkgYmFzZS4gKi9cbiAgYnVpbGRGaWx0ZXJzOiAob3B0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGJhc2U6IENvbW1vbkZpbHRlclBhcmFtcykgPT4gVEZpbHRlcjtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGFjdGl2ZS1maWx0ZXIgbWFwIHNob3duIGJlZm9yZSB0aGUgcXVlcnkuICovXG4gIGFjdGl2ZUZpbHRlcnM6IChmaWx0ZXJzOiBURmlsdGVyKSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIE9wdGlvbmFsIHRhYmxlLW9ubHkgc3RhdGlzdGljcyBibG9jazsgcmV0dXJuIGBudWxsYCB0byBvbWl0LiAqL1xuICBzdGF0aXN0aWNzPzogKGl0ZW1zOiBUSXRlbVtdKSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGw7XG4gIC8qKiBSb3dzIHRvIHNlcmlhbGl6ZSAoZnVsbCBpdGVtcyB3aGVuIHRoZSBzaG93LWZsYWcgaXMgc2V0LCBlbHNlIGEgc2xpbSBtYXApLiAqL1xuICByb3dzOiAoaXRlbXM6IFRJdGVtW10sIG9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB1bmtub3duO1xuICAvKiogQ29tbWFuZCBuYW1lIGZvciBlcnJvci1oYW5kbGVyIGNvbnRleHQsIGUuZy4gYCdsaXN0LXBpcGVsaW5lcydgLiAqL1xuICBjb21tYW5kTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNoYXJlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbGlzdCBjb21tYW5kcy4gQXBwbGllcyBjb21tb24gKyBlbnRpdHktc3BlY2lmaWNcbiAqIGZpbHRlcnMsIHF1ZXJpZXMgdGhlIEFQSSwgcHJpbnRzIGEgcmVzdWx0cyBzdW1tYXJ5IChhbmQgb3B0aW9uYWwgc3RhdGlzdGljcyksXG4gKiBhbmQgd3JpdGVzIHRoZSByb3dzIGluIHRoZSByZXF1ZXN0ZWQgZm9ybWF0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuTGlzdEVudGl0eTxUSXRlbSwgVEZpbHRlciBleHRlbmRzIENvbW1vbkZpbHRlclBhcmFtcz4oXG4gIHByb2dyYW06IENvbW1hbmQsXG4gIG9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ICYgeyBmb3JtYXQ/OiBPdXRwdXRGb3JtYXQ7IG91dHB1dD86IHN0cmluZzsgdmVyaWZ5U3NsPzogYm9vbGVhbiB9LFxuICBzcGVjOiBMaXN0RW50aXR5U3BlYzxUSXRlbSwgVEZpbHRlcj4sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoYExpc3QgJHtzcGVjLmxhYmVsUGx1cmFsfWAsIGBRdWVyeSAke3NwZWMubGFiZWxQbHVyYWx9YCk7XG4gIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmaWx0ZXJQYXJhbXMgPSBzcGVjLmJ1aWxkRmlsdGVycyhvcHRpb25zLCBidWlsZENvbW1vbkZpbHRlcnMob3B0aW9ucykpO1xuXG4gICAgLy8gRGlzcGxheSBhY3RpdmUgZmlsdGVyc1xuICAgIGNvbnN0IGFjdGl2ZUZpbHRlcnMgPSBzcGVjLmFjdGl2ZUZpbHRlcnMoZmlsdGVyUGFyYW1zKTtcbiAgICBpZiAoT2JqZWN0LmtleXMoYWN0aXZlRmlsdGVycykubGVuZ3RoID4gMCkge1xuICAgICAgcHJpbnRJbmZvKCdBY3RpdmUgRmlsdGVycycpO1xuICAgICAgcHJpbnRLZXlWYWx1ZShhY3RpdmVGaWx0ZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJpbnRJbmZvKGBObyBmaWx0ZXJzIGFwcGxpZWQgLSBmZXRjaGluZyBhbGwgJHtzcGVjLmxhYmVsUGx1cmFsLnRvTG93ZXJDYXNlKCl9YCk7XG4gICAgfVxuXG4gICAgZGlzcGxheVBhZ2luYXRpb25JbmZvKGZpbHRlclBhcmFtcyk7XG5cbiAgICAvLyBTZWN1cml0eSB3YXJuaW5nIGZvciBTU0wgdmVyaWZpY2F0aW9uIGRpc2FibGVkXG4gICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgIC8vIENyZWF0ZSBhdXRoZW50aWNhdGVkIEFQSSBjbGllbnRcbiAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50KG9wdGlvbnMpO1xuICAgIGNvbnN0IGNvbmZpZyA9IGNsaWVudC5nZXRDb25maWcoKTtcblxuICAgIC8vIFF1ZXJ5XG4gICAgY29uc29sZS5sb2coJycpO1xuICAgIHByaW50U2VjdGlvbihgUXVlcnlpbmcgJHtzcGVjLmxhYmVsUGx1cmFsfWApO1xuICAgIHByaW50SW5mbygnU2VuZGluZyByZXF1ZXN0IHRvIEFQSS4uLicpO1xuXG4gICAgY29uc3QgcmVxdWVzdFN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoXG4gICAgICBzcGVjLmxpc3RVcmwoY29uZmlnKSxcbiAgICAgIGZpbHRlclBhcmFtcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApO1xuICAgIGNvbnN0IHJlcXVlc3REdXJhdGlvbiA9IERhdGUubm93KCkgLSByZXF1ZXN0U3RhcnQ7XG5cbiAgICAvLyBIYW5kbGUgcmVzcG9uc2VcbiAgICBjb25zdCB7IGl0ZW1zLCB0b3RhbCwgaGFzTW9yZSB9ID0gZXh0cmFjdExpc3RSZXNwb25zZTxUSXRlbT4ocmVzcG9uc2UsIHNwZWMucmVzcG9uc2VLZXkpO1xuXG4gICAgY29uc29sZS5sb2coJycpO1xuICAgIHByaW50U2VjdGlvbign4pyTIFF1ZXJ5IENvbXBsZXRlJyk7XG5cbiAgICAvLyBEaXNwbGF5IHJlc3VsdHMgc3VtbWFyeVxuICAgIGRpc3BsYXlMaXN0UmVzdWx0cyhpdGVtcywgdG90YWwsIGhhc01vcmUsIHNwZWMubGFiZWxQbHVyYWwsIHJlcXVlc3REdXJhdGlvbiwgZmlsdGVyUGFyYW1zKTtcblxuICAgIC8vIERpc3BsYXkgc3RhdGlzdGljc1xuICAgIGlmIChpdGVtcy5sZW5ndGggPiAwICYmIG9wdGlvbnMuZm9ybWF0ID09PSAndGFibGUnKSB7XG4gICAgICBjb25zdCBzdGF0cyA9IHNwZWMuc3RhdGlzdGljcz8uKGl0ZW1zKTtcbiAgICAgIGlmIChzdGF0cykge1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50SW5mbygnU3RhdGlzdGljcycpO1xuICAgICAgICBwcmludEtleVZhbHVlKHN0YXRzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPdXRwdXQgZGF0YSBpbiByZXF1ZXN0ZWQgZm9ybWF0XG4gICAgY29uc29sZS5sb2coJycpO1xuICAgIGlmIChvcHRpb25zLm91dHB1dCkge1xuICAgICAgcHJpbnRJbmZvKCdTYXZpbmcgdG8gZmlsZScsIHsgcGF0aDogb3B0aW9ucy5vdXRwdXQsIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQgfSk7XG4gICAgfVxuXG4gICAgb3V0cHV0RGF0YShzcGVjLnJvd3MoaXRlbXMsIG9wdGlvbnMpLCB7XG4gICAgICBmb3JtYXQ6IG9wdGlvbnMuZm9ybWF0LFxuICAgICAgZmlsZTogb3B0aW9ucy5vdXRwdXQsXG4gICAgfSk7XG5cbiAgICAvLyBQZXJmb3JtYW5jZSBtZXRyaWNzXG4gICAgY29uc29sZS5sb2coJycpO1xuICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgJ0V4ZWN1dGlvbiBJRCc6IGV4ZWN1dGlvbklkLFxuICAgICAgJ1RvdGFsIER1cmF0aW9uJzogZm9ybWF0RHVyYXRpb24oRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSksXG4gICAgfSk7XG5cbiAgICBjb25zb2xlLmxvZygnJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICBjb21tYW5kOiBzcGVjLmNvbW1hbmROYW1lLFxuICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgZmlsdGVyczogb3B0aW9ucyxcbiAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Registers the `get-pipeline` command with the CLI program.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```bash
|
|
7
|
+
* pipeline-manager pipeline get --id <pipeline-id>
|
|
8
|
+
* pipeline-manager pipeline get --id <pipeline-id> --format json
|
|
9
|
+
* pipeline-manager pipeline get --id <pipeline-id> --output pipeline.json
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export declare function getPipeline(program: Command): void;
|
|
13
|
+
//# sourceMappingURL=get-pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-pipeline.d.ts","sourceRoot":"","sources":["../../src/commands/get-pipeline.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgClD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import pico from 'picocolors';
|
|
5
|
+
import { runGetEntity } from './entity-get.js';
|
|
6
|
+
import {} from '../types/index.js';
|
|
7
|
+
import { withSslOptions } from '../utils/command-utils.js';
|
|
8
|
+
const { bold, green } = pico;
|
|
9
|
+
/**
|
|
10
|
+
* Registers the `get-pipeline` command with the CLI program.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```bash
|
|
14
|
+
* pipeline-manager pipeline get --id <pipeline-id>
|
|
15
|
+
* pipeline-manager pipeline get --id <pipeline-id> --format json
|
|
16
|
+
* pipeline-manager pipeline get --id <pipeline-id> --output pipeline.json
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export function getPipeline(program) {
|
|
20
|
+
withSslOptions(program
|
|
21
|
+
.command('get')
|
|
22
|
+
.description('Get a single pipeline by ID')
|
|
23
|
+
.requiredOption('-i, --id <id>', 'Pipeline ID')
|
|
24
|
+
.option('-f, --format <format>', 'Output format (json, yaml, table)', 'json')
|
|
25
|
+
.option('-o, --output <file>', 'Save output to file'))
|
|
26
|
+
.option('--show-props', 'Show full pipeline properties in table format', false)
|
|
27
|
+
.action((options) => runGetEntity(program, options, {
|
|
28
|
+
label: 'Pipeline',
|
|
29
|
+
responseKey: 'pipeline',
|
|
30
|
+
urlFor: (client, id) => `${client.getConfig().api.pipelineUrl}/${id}`,
|
|
31
|
+
summary: (pipeline) => ({
|
|
32
|
+
'Pipeline ID': green(bold(pipeline.id)),
|
|
33
|
+
'Project': pipeline.project,
|
|
34
|
+
'Organization': pipeline.organization,
|
|
35
|
+
'Name': pipeline.pipelineName || '(not set)',
|
|
36
|
+
'Visibility': pipeline.visibility || 'org',
|
|
37
|
+
'Default': pipeline.isDefault ? 'Yes' : 'No',
|
|
38
|
+
'Active': pipeline.isActive ? 'Yes' : 'No',
|
|
39
|
+
'Created At': pipeline.createdAt || '(not available)',
|
|
40
|
+
'Updated At': pipeline.updatedAt || '(not available)',
|
|
41
|
+
}),
|
|
42
|
+
extra: (options, pipeline) => options.showProps && options.format === 'table' && pipeline.props && Object.keys(pipeline.props).length > 0
|
|
43
|
+
? { infoLabel: 'Pipeline Properties', payload: pipeline.props }
|
|
44
|
+
: null,
|
|
45
|
+
commandName: 'get-pipeline',
|
|
46
|
+
idContextKey: 'pipelineId',
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBpcGVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2dldC1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWlCLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRTdCOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsT0FBZ0I7SUFDMUMsY0FBYyxDQUNaLE9BQU87U0FDSixPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ2QsV0FBVyxDQUFDLDZCQUE2QixDQUFDO1NBQzFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDO1NBQzlDLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLENBQUM7U0FDNUUsTUFBTSxDQUFDLHFCQUFxQixFQUFFLHFCQUFxQixDQUFDLENBQ3hEO1NBQ0UsTUFBTSxDQUFDLGNBQWMsRUFBRSwrQ0FBK0MsRUFBRSxLQUFLLENBQUM7U0FDOUUsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQVcsT0FBTyxFQUFFLE9BQU8sRUFBRTtRQUM1RCxLQUFLLEVBQUUsVUFBVTtRQUNqQixXQUFXLEVBQUUsVUFBVTtRQUN2QixNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFBRTtRQUNyRSxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEIsYUFBYSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLFNBQVMsRUFBRSxRQUFRLENBQUMsT0FBTztZQUMzQixjQUFjLEVBQUUsUUFBUSxDQUFDLFlBQVk7WUFDckMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxZQUFZLElBQUksV0FBVztZQUM1QyxZQUFZLEVBQUUsUUFBUSxDQUFDLFVBQVUsSUFBSSxLQUFLO1lBQzFDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDNUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUMxQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFNBQVMsSUFBSSxpQkFBaUI7WUFDckQsWUFBWSxFQUFFLFFBQVEsQ0FBQyxTQUFTLElBQUksaUJBQWlCO1NBQ3RELENBQUM7UUFDRixLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDM0IsT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLE9BQU8sSUFBSSxRQUFRLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3pHLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRTtZQUMvRCxDQUFDLENBQUMsSUFBSTtRQUNWLFdBQVcsRUFBRSxjQUFjO1FBQzNCLFlBQVksRUFBRSxZQUFZO0tBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnO1xuaW1wb3J0IHsgcnVuR2V0RW50aXR5IH0gZnJvbSAnLi9lbnRpdHktZ2V0LmpzJztcbmltcG9ydCB7IHR5cGUgUGlwZWxpbmUgfSBmcm9tICcuLi90eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQgeyB3aXRoU3NsT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuXG5jb25zdCB7IGJvbGQsIGdyZWVuIH0gPSBwaWNvO1xuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGdldC1waXBlbGluZWAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSBnZXQgLS1pZCA8cGlwZWxpbmUtaWQ+XG4gKiBwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIGdldCAtLWlkIDxwaXBlbGluZS1pZD4gLS1mb3JtYXQganNvblxuICogcGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSBnZXQgLS1pZCA8cGlwZWxpbmUtaWQ+IC0tb3V0cHV0IHBpcGVsaW5lLmpzb25cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGlwZWxpbmUocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICB3aXRoU3NsT3B0aW9ucyhcbiAgICBwcm9ncmFtXG4gICAgICAuY29tbWFuZCgnZ2V0JylcbiAgICAgIC5kZXNjcmlwdGlvbignR2V0IGEgc2luZ2xlIHBpcGVsaW5lIGJ5IElEJylcbiAgICAgIC5yZXF1aXJlZE9wdGlvbignLWksIC0taWQgPGlkPicsICdQaXBlbGluZSBJRCcpXG4gICAgICAub3B0aW9uKCctZiwgLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCAoanNvbiwgeWFtbCwgdGFibGUpJywgJ2pzb24nKVxuICAgICAgLm9wdGlvbignLW8sIC0tb3V0cHV0IDxmaWxlPicsICdTYXZlIG91dHB1dCB0byBmaWxlJyksXG4gIClcbiAgICAub3B0aW9uKCctLXNob3ctcHJvcHMnLCAnU2hvdyBmdWxsIHBpcGVsaW5lIHByb3BlcnRpZXMgaW4gdGFibGUgZm9ybWF0JywgZmFsc2UpXG4gICAgLmFjdGlvbigob3B0aW9ucykgPT4gcnVuR2V0RW50aXR5PFBpcGVsaW5lPihwcm9ncmFtLCBvcHRpb25zLCB7XG4gICAgICBsYWJlbDogJ1BpcGVsaW5lJyxcbiAgICAgIHJlc3BvbnNlS2V5OiAncGlwZWxpbmUnLFxuICAgICAgdXJsRm9yOiAoY2xpZW50LCBpZCkgPT4gYCR7Y2xpZW50LmdldENvbmZpZygpLmFwaS5waXBlbGluZVVybH0vJHtpZH1gLFxuICAgICAgc3VtbWFyeTogKHBpcGVsaW5lKSA9PiAoe1xuICAgICAgICAnUGlwZWxpbmUgSUQnOiBncmVlbihib2xkKHBpcGVsaW5lLmlkKSksXG4gICAgICAgICdQcm9qZWN0JzogcGlwZWxpbmUucHJvamVjdCxcbiAgICAgICAgJ09yZ2FuaXphdGlvbic6IHBpcGVsaW5lLm9yZ2FuaXphdGlvbixcbiAgICAgICAgJ05hbWUnOiBwaXBlbGluZS5waXBlbGluZU5hbWUgfHwgJyhub3Qgc2V0KScsXG4gICAgICAgICdWaXNpYmlsaXR5JzogcGlwZWxpbmUudmlzaWJpbGl0eSB8fCAnb3JnJyxcbiAgICAgICAgJ0RlZmF1bHQnOiBwaXBlbGluZS5pc0RlZmF1bHQgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICdBY3RpdmUnOiBwaXBlbGluZS5pc0FjdGl2ZSA/ICdZZXMnIDogJ05vJyxcbiAgICAgICAgJ0NyZWF0ZWQgQXQnOiBwaXBlbGluZS5jcmVhdGVkQXQgfHwgJyhub3QgYXZhaWxhYmxlKScsXG4gICAgICAgICdVcGRhdGVkIEF0JzogcGlwZWxpbmUudXBkYXRlZEF0IHx8ICcobm90IGF2YWlsYWJsZSknLFxuICAgICAgfSksXG4gICAgICBleHRyYTogKG9wdGlvbnMsIHBpcGVsaW5lKSA9PlxuICAgICAgICBvcHRpb25zLnNob3dQcm9wcyAmJiBvcHRpb25zLmZvcm1hdCA9PT0gJ3RhYmxlJyAmJiBwaXBlbGluZS5wcm9wcyAmJiBPYmplY3Qua2V5cyhwaXBlbGluZS5wcm9wcykubGVuZ3RoID4gMFxuICAgICAgICAgID8geyBpbmZvTGFiZWw6ICdQaXBlbGluZSBQcm9wZXJ0aWVzJywgcGF5bG9hZDogcGlwZWxpbmUucHJvcHMgfVxuICAgICAgICAgIDogbnVsbCxcbiAgICAgIGNvbW1hbmROYW1lOiAnZ2V0LXBpcGVsaW5lJyxcbiAgICAgIGlkQ29udGV4dEtleTogJ3BpcGVsaW5lSWQnLFxuICAgIH0pKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Registers the `get-plugin` command with the CLI program.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```bash
|
|
7
|
+
* pipeline-manager plugin get --id <plugin-id>
|
|
8
|
+
* pipeline-manager plugin get --id <plugin-id> --format json
|
|
9
|
+
* pipeline-manager plugin get --id <plugin-id> --output plugin.json
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export declare function getPlugin(program: Command): void;
|
|
13
|
+
//# sourceMappingURL=get-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-plugin.d.ts","sourceRoot":"","sources":["../../src/commands/get-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiChD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import pico from 'picocolors';
|
|
5
|
+
import { runGetEntity } from './entity-get.js';
|
|
6
|
+
import { formatFileSize } from '../config/cli.constants.js';
|
|
7
|
+
import {} from '../types/index.js';
|
|
8
|
+
import { withSslOptions } from '../utils/command-utils.js';
|
|
9
|
+
const { bold, green } = pico;
|
|
10
|
+
/**
|
|
11
|
+
* Registers the `get-plugin` command with the CLI program.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```bash
|
|
15
|
+
* pipeline-manager plugin get --id <plugin-id>
|
|
16
|
+
* pipeline-manager plugin get --id <plugin-id> --format json
|
|
17
|
+
* pipeline-manager plugin get --id <plugin-id> --output plugin.json
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export function getPlugin(program) {
|
|
21
|
+
withSslOptions(program
|
|
22
|
+
.command('get')
|
|
23
|
+
.description('Get a single plugin by ID')
|
|
24
|
+
.requiredOption('-i, --id <id>', 'Plugin ID')
|
|
25
|
+
.option('-f, --format <format>', 'Output format (json, yaml, table)', 'json')
|
|
26
|
+
.option('-o, --output <file>', 'Save output to file'))
|
|
27
|
+
.option('--show-metadata', 'Show full plugin metadata in table format', false)
|
|
28
|
+
.action((options) => runGetEntity(program, options, {
|
|
29
|
+
label: 'Plugin',
|
|
30
|
+
responseKey: 'plugin',
|
|
31
|
+
urlFor: (client, id) => `${client.getConfig().api.pluginUrl}/${id}`,
|
|
32
|
+
summary: (plugin) => ({
|
|
33
|
+
'Plugin ID': green(bold(plugin.id)),
|
|
34
|
+
'Name': plugin.name,
|
|
35
|
+
'Version': plugin.version,
|
|
36
|
+
'Organization': plugin.organization,
|
|
37
|
+
'Description': plugin.description || '(not set)',
|
|
38
|
+
'File Size': plugin.fileSize ? formatFileSize(plugin.fileSize) : '(not available)',
|
|
39
|
+
'Public': plugin.isPublic ? 'Yes' : 'No',
|
|
40
|
+
'Active': plugin.isActive ? 'Yes' : 'No',
|
|
41
|
+
'Created At': plugin.createdAt || '(not available)',
|
|
42
|
+
'Updated At': plugin.updatedAt || '(not available)',
|
|
43
|
+
}),
|
|
44
|
+
extra: (options, plugin) => options.showMetadata && options.format === 'table' && plugin.metadata && Object.keys(plugin.metadata).length > 0
|
|
45
|
+
? { infoLabel: 'Plugin Metadata', payload: plugin.metadata }
|
|
46
|
+
: null,
|
|
47
|
+
commandName: 'get-plugin',
|
|
48
|
+
idContextKey: 'pluginId',
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9nZXQtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFM0QsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFN0I7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxPQUFnQjtJQUN4QyxjQUFjLENBQ1osT0FBTztTQUNKLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDZCxXQUFXLENBQUMsMkJBQTJCLENBQUM7U0FDeEMsY0FBYyxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUM7U0FDNUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFLG1DQUFtQyxFQUFFLE1BQU0sQ0FBQztTQUM1RSxNQUFNLENBQUMscUJBQXFCLEVBQUUscUJBQXFCLENBQUMsQ0FDeEQ7U0FDRSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsMkNBQTJDLEVBQUUsS0FBSyxDQUFDO1NBQzdFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7UUFDMUQsS0FBSyxFQUFFLFFBQVE7UUFDZixXQUFXLEVBQUUsUUFBUTtRQUNyQixNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRTtRQUNuRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNuQixTQUFTLEVBQUUsTUFBTSxDQUFDLE9BQU87WUFDekIsY0FBYyxFQUFFLE1BQU0sQ0FBQyxZQUFZO1lBQ25DLGFBQWEsRUFBRSxNQUFNLENBQUMsV0FBVyxJQUFJLFdBQVc7WUFDaEQsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQjtZQUNsRixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ3hDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDeEMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxTQUFTLElBQUksaUJBQWlCO1lBQ25ELFlBQVksRUFBRSxNQUFNLENBQUMsU0FBUyxJQUFJLGlCQUFpQjtTQUNwRCxDQUFDO1FBQ0YsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQ3pCLE9BQU8sQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUM5RyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDNUQsQ0FBQyxDQUFDLElBQUk7UUFDVixXQUFXLEVBQUUsWUFBWTtRQUN6QixZQUFZLEVBQUUsVUFBVTtLQUN6QixDQUFDLENBQUMsQ0FBQztBQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IHJ1bkdldEVudGl0eSB9IGZyb20gJy4vZW50aXR5LWdldC5qcyc7XG5pbXBvcnQgeyBmb3JtYXRGaWxlU2l6ZSB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IHR5cGUgUGx1Z2luIH0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuaW1wb3J0IHsgd2l0aFNzbE9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcblxuY29uc3QgeyBib2xkLCBncmVlbiB9ID0gcGljbztcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBnZXQtcGx1Z2luYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBiYXNoXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHBsdWdpbiBnZXQgLS1pZCA8cGx1Z2luLWlkPlxuICogcGlwZWxpbmUtbWFuYWdlciBwbHVnaW4gZ2V0IC0taWQgPHBsdWdpbi1pZD4gLS1mb3JtYXQganNvblxuICogcGlwZWxpbmUtbWFuYWdlciBwbHVnaW4gZ2V0IC0taWQgPHBsdWdpbi1pZD4gLS1vdXRwdXQgcGx1Z2luLmpzb25cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFNzbE9wdGlvbnMoXG4gICAgcHJvZ3JhbVxuICAgICAgLmNvbW1hbmQoJ2dldCcpXG4gICAgICAuZGVzY3JpcHRpb24oJ0dldCBhIHNpbmdsZSBwbHVnaW4gYnkgSUQnKVxuICAgICAgLnJlcXVpcmVkT3B0aW9uKCctaSwgLS1pZCA8aWQ+JywgJ1BsdWdpbiBJRCcpXG4gICAgICAub3B0aW9uKCctZiwgLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCAoanNvbiwgeWFtbCwgdGFibGUpJywgJ2pzb24nKVxuICAgICAgLm9wdGlvbignLW8sIC0tb3V0cHV0IDxmaWxlPicsICdTYXZlIG91dHB1dCB0byBmaWxlJyksXG4gIClcbiAgICAub3B0aW9uKCctLXNob3ctbWV0YWRhdGEnLCAnU2hvdyBmdWxsIHBsdWdpbiBtZXRhZGF0YSBpbiB0YWJsZSBmb3JtYXQnLCBmYWxzZSlcbiAgICAuYWN0aW9uKChvcHRpb25zKSA9PiBydW5HZXRFbnRpdHk8UGx1Z2luPihwcm9ncmFtLCBvcHRpb25zLCB7XG4gICAgICBsYWJlbDogJ1BsdWdpbicsXG4gICAgICByZXNwb25zZUtleTogJ3BsdWdpbicsXG4gICAgICB1cmxGb3I6IChjbGllbnQsIGlkKSA9PiBgJHtjbGllbnQuZ2V0Q29uZmlnKCkuYXBpLnBsdWdpblVybH0vJHtpZH1gLFxuICAgICAgc3VtbWFyeTogKHBsdWdpbikgPT4gKHtcbiAgICAgICAgJ1BsdWdpbiBJRCc6IGdyZWVuKGJvbGQocGx1Z2luLmlkKSksXG4gICAgICAgICdOYW1lJzogcGx1Z2luLm5hbWUsXG4gICAgICAgICdWZXJzaW9uJzogcGx1Z2luLnZlcnNpb24sXG4gICAgICAgICdPcmdhbml6YXRpb24nOiBwbHVnaW4ub3JnYW5pemF0aW9uLFxuICAgICAgICAnRGVzY3JpcHRpb24nOiBwbHVnaW4uZGVzY3JpcHRpb24gfHwgJyhub3Qgc2V0KScsXG4gICAgICAgICdGaWxlIFNpemUnOiBwbHVnaW4uZmlsZVNpemUgPyBmb3JtYXRGaWxlU2l6ZShwbHVnaW4uZmlsZVNpemUpIDogJyhub3QgYXZhaWxhYmxlKScsXG4gICAgICAgICdQdWJsaWMnOiBwbHVnaW4uaXNQdWJsaWMgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICdBY3RpdmUnOiBwbHVnaW4uaXNBY3RpdmUgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICdDcmVhdGVkIEF0JzogcGx1Z2luLmNyZWF0ZWRBdCB8fCAnKG5vdCBhdmFpbGFibGUpJyxcbiAgICAgICAgJ1VwZGF0ZWQgQXQnOiBwbHVnaW4udXBkYXRlZEF0IHx8ICcobm90IGF2YWlsYWJsZSknLFxuICAgICAgfSksXG4gICAgICBleHRyYTogKG9wdGlvbnMsIHBsdWdpbikgPT5cbiAgICAgICAgb3B0aW9ucy5zaG93TWV0YWRhdGEgJiYgb3B0aW9ucy5mb3JtYXQgPT09ICd0YWJsZScgJiYgcGx1Z2luLm1ldGFkYXRhICYmIE9iamVjdC5rZXlzKHBsdWdpbi5tZXRhZGF0YSkubGVuZ3RoID4gMFxuICAgICAgICAgID8geyBpbmZvTGFiZWw6ICdQbHVnaW4gTWV0YWRhdGEnLCBwYXlsb2FkOiBwbHVnaW4ubWV0YWRhdGEgfVxuICAgICAgICAgIDogbnVsbCxcbiAgICAgIGNvbW1hbmROYW1lOiAnZ2V0LXBsdWdpbicsXG4gICAgICBpZENvbnRleHRLZXk6ICdwbHVnaW5JZCcsXG4gICAgfSkpO1xufVxuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Registers the `template instantiate` command.
|
|
4
|
+
*
|
|
5
|
+
* Renders a golden-path template into a concrete pipeline `props` document by
|
|
6
|
+
* supplying its declared inputs. It **creates nothing** — the rendered props are
|
|
7
|
+
* written to a file (or stdout) and go through the normal `pipeline create` path,
|
|
8
|
+
* where compliance and quota still apply.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```bash
|
|
12
|
+
* pipeline-manager template instantiate --name react-javascript \
|
|
13
|
+
* --project react --organization AcmeCorp \
|
|
14
|
+
* --input orgId=1234abcd-... --output pipeline-props.json
|
|
15
|
+
*
|
|
16
|
+
* pipeline-manager pipeline create --file pipeline-props.json --deploy
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function instantiateTemplate(program: Command): void;
|
|
20
|
+
//# sourceMappingURL=instantiate-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instantiate-template.d.ts","sourceRoot":"","sources":["../../src/commands/instantiate-template.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgHpC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2J1D"}
|