@signstack/cli 0.1.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/README.md +458 -0
- package/bin/run.js +12 -0
- package/dist/apps/signstack-cli/schemas/asset.schema.json +220 -0
- package/dist/apps/signstack-cli/schemas/blueprint.schema.json +485 -0
- package/dist/apps/signstack-cli/schemas/jsonata-function.schema.json +185 -0
- package/dist/apps/signstack-cli/schemas/schema.schema.json +97 -0
- package/dist/apps/signstack-cli/schemas/template.schema.json +295 -0
- package/dist/apps/signstack-cli/src/commands/auth/login.d.ts +25 -0
- package/dist/apps/signstack-cli/src/commands/auth/login.js +229 -0
- package/dist/apps/signstack-cli/src/commands/auth/login.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/auth/logout.d.ts +10 -0
- package/dist/apps/signstack-cli/src/commands/auth/logout.js +59 -0
- package/dist/apps/signstack-cli/src/commands/auth/logout.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/auth/whoami.d.ts +9 -0
- package/dist/apps/signstack-cli/src/commands/auth/whoami.js +85 -0
- package/dist/apps/signstack-cli/src/commands/auth/whoami.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/generate.d.ts +51 -0
- package/dist/apps/signstack-cli/src/commands/generate.js +479 -0
- package/dist/apps/signstack-cli/src/commands/generate.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/preview.d.ts +24 -0
- package/dist/apps/signstack-cli/src/commands/preview.js +162 -0
- package/dist/apps/signstack-cli/src/commands/preview.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/pull.d.ts +28 -0
- package/dist/apps/signstack-cli/src/commands/pull.js +244 -0
- package/dist/apps/signstack-cli/src/commands/pull.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/push.d.ts +46 -0
- package/dist/apps/signstack-cli/src/commands/push.js +460 -0
- package/dist/apps/signstack-cli/src/commands/push.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/run.d.ts +22 -0
- package/dist/apps/signstack-cli/src/commands/run.js +126 -0
- package/dist/apps/signstack-cli/src/commands/run.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/test.d.ts +6 -0
- package/dist/apps/signstack-cli/src/commands/test.js +25 -0
- package/dist/apps/signstack-cli/src/commands/test.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/validate.d.ts +59 -0
- package/dist/apps/signstack-cli/src/commands/validate.js +558 -0
- package/dist/apps/signstack-cli/src/commands/validate.js.map +1 -0
- package/dist/apps/signstack-cli/src/index.d.ts +1 -0
- package/dist/apps/signstack-cli/src/index.js +2 -0
- package/dist/apps/signstack-cli/src/index.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/api-client.d.ts +77 -0
- package/dist/apps/signstack-cli/src/lib/api-client.js +269 -0
- package/dist/apps/signstack-cli/src/lib/api-client.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/base-command.d.ts +38 -0
- package/dist/apps/signstack-cli/src/lib/base-command.js +135 -0
- package/dist/apps/signstack-cli/src/lib/base-command.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/config.d.ts +47 -0
- package/dist/apps/signstack-cli/src/lib/config.js +106 -0
- package/dist/apps/signstack-cli/src/lib/config.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/entity-data-resolver.d.ts +31 -0
- package/dist/apps/signstack-cli/src/lib/entity-data-resolver.js +107 -0
- package/dist/apps/signstack-cli/src/lib/entity-data-resolver.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/local-resource-loader.d.ts +72 -0
- package/dist/apps/signstack-cli/src/lib/local-resource-loader.js +238 -0
- package/dist/apps/signstack-cli/src/lib/local-resource-loader.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/path-utils.d.ts +4 -0
- package/dist/apps/signstack-cli/src/lib/path-utils.js +7 -0
- package/dist/apps/signstack-cli/src/lib/path-utils.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/payload-builder.d.ts +127 -0
- package/dist/apps/signstack-cli/src/lib/payload-builder.js +545 -0
- package/dist/apps/signstack-cli/src/lib/payload-builder.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/preview-handler.d.ts +95 -0
- package/dist/apps/signstack-cli/src/lib/preview-handler.js +611 -0
- package/dist/apps/signstack-cli/src/lib/preview-handler.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/preview-output-formatter.d.ts +63 -0
- package/dist/apps/signstack-cli/src/lib/preview-output-formatter.js +198 -0
- package/dist/apps/signstack-cli/src/lib/preview-output-formatter.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/public-api-client.d.ts +13 -0
- package/dist/apps/signstack-cli/src/lib/public-api-client.js +39 -0
- package/dist/apps/signstack-cli/src/lib/public-api-client.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/resource-puller.d.ts +131 -0
- package/dist/apps/signstack-cli/src/lib/resource-puller.js +800 -0
- package/dist/apps/signstack-cli/src/lib/resource-puller.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/resource-pusher.d.ts +87 -0
- package/dist/apps/signstack-cli/src/lib/resource-pusher.js +361 -0
- package/dist/apps/signstack-cli/src/lib/resource-pusher.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/resource-scanner.d.ts +29 -0
- package/dist/apps/signstack-cli/src/lib/resource-scanner.js +101 -0
- package/dist/apps/signstack-cli/src/lib/resource-scanner.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/resource-validator.d.ts +44 -0
- package/dist/apps/signstack-cli/src/lib/resource-validator.js +158 -0
- package/dist/apps/signstack-cli/src/lib/resource-validator.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/run-handler.d.ts +47 -0
- package/dist/apps/signstack-cli/src/lib/run-handler.js +266 -0
- package/dist/apps/signstack-cli/src/lib/run-handler.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/safe-path.d.ts +28 -0
- package/dist/apps/signstack-cli/src/lib/safe-path.js +44 -0
- package/dist/apps/signstack-cli/src/lib/safe-path.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/scenario-file.d.ts +35 -0
- package/dist/apps/signstack-cli/src/lib/scenario-file.js +80 -0
- package/dist/apps/signstack-cli/src/lib/scenario-file.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/schema-validator.d.ts +8 -0
- package/dist/apps/signstack-cli/src/lib/schema-validator.js +39 -0
- package/dist/apps/signstack-cli/src/lib/schema-validator.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/url-validator.d.ts +17 -0
- package/dist/apps/signstack-cli/src/lib/url-validator.js +61 -0
- package/dist/apps/signstack-cli/src/lib/url-validator.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/yaml-document-parser.d.ts +25 -0
- package/dist/apps/signstack-cli/src/lib/yaml-document-parser.js +133 -0
- package/dist/apps/signstack-cli/src/lib/yaml-document-parser.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/yaml-transforms.d.ts +3 -0
- package/dist/apps/signstack-cli/src/lib/yaml-transforms.js +32 -0
- package/dist/apps/signstack-cli/src/lib/yaml-transforms.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/yaml-writer.d.ts +47 -0
- package/dist/apps/signstack-cli/src/lib/yaml-writer.js +160 -0
- package/dist/apps/signstack-cli/src/lib/yaml-writer.js.map +1 -0
- package/dist/apps/signstack-cli/src/types/auth.types.d.ts +48 -0
- package/dist/apps/signstack-cli/src/types/auth.types.js +31 -0
- package/dist/apps/signstack-cli/src/types/auth.types.js.map +1 -0
- package/dist/apps/signstack-cli/src/types/schema.types.d.ts +14 -0
- package/dist/apps/signstack-cli/src/types/schema.types.js +16 -0
- package/dist/apps/signstack-cli/src/types/schema.types.js.map +1 -0
- package/dist/apps/signstack-cli/src/types/yaml.types.d.ts +144 -0
- package/dist/apps/signstack-cli/src/types/yaml.types.js +2 -0
- package/dist/apps/signstack-cli/src/types/yaml.types.js.map +1 -0
- package/dist/libs/common/base/src/index.d.ts +14 -0
- package/dist/libs/common/base/src/index.js +44 -0
- package/dist/libs/common/base/src/index.js.map +1 -0
- package/dist/libs/common/base/src/lib/address.util.d.ts +12 -0
- package/dist/libs/common/base/src/lib/address.util.js +55 -0
- package/dist/libs/common/base/src/lib/address.util.js.map +1 -0
- package/dist/libs/common/base/src/lib/country-code-data.d.ts +5 -0
- package/dist/libs/common/base/src/lib/country-code-data.js +1256 -0
- package/dist/libs/common/base/src/lib/country-code-data.js.map +1 -0
- package/dist/libs/common/base/src/lib/date.util.d.ts +13 -0
- package/dist/libs/common/base/src/lib/date.util.js +135 -0
- package/dist/libs/common/base/src/lib/date.util.js.map +1 -0
- package/dist/libs/common/base/src/lib/headers.d.ts +1 -0
- package/dist/libs/common/base/src/lib/headers.js +5 -0
- package/dist/libs/common/base/src/lib/headers.js.map +1 -0
- package/dist/libs/common/base/src/lib/jsonata.service.d.ts +32 -0
- package/dist/libs/common/base/src/lib/jsonata.service.js +207 -0
- package/dist/libs/common/base/src/lib/jsonata.service.js.map +1 -0
- package/dist/libs/common/base/src/lib/key-validation.constants.d.ts +37 -0
- package/dist/libs/common/base/src/lib/key-validation.constants.js +144 -0
- package/dist/libs/common/base/src/lib/key-validation.constants.js.map +1 -0
- package/dist/libs/common/base/src/lib/phone-util.d.ts +16 -0
- package/dist/libs/common/base/src/lib/phone-util.js +61 -0
- package/dist/libs/common/base/src/lib/phone-util.js.map +1 -0
- package/dist/libs/common/base/src/lib/schema-validation.util.d.ts +24 -0
- package/dist/libs/common/base/src/lib/schema-validation.util.js +155 -0
- package/dist/libs/common/base/src/lib/schema-validation.util.js.map +1 -0
- package/dist/libs/common/base/src/lib/string-builder.d.ts +48 -0
- package/dist/libs/common/base/src/lib/string-builder.js +90 -0
- package/dist/libs/common/base/src/lib/string-builder.js.map +1 -0
- package/dist/libs/common/base/src/lib/util.d.ts +20 -0
- package/dist/libs/common/base/src/lib/util.js +110 -0
- package/dist/libs/common/base/src/lib/util.js.map +1 -0
- package/dist/libs/signstack/base/schemas/asset.schema.json +220 -0
- package/dist/libs/signstack/base/schemas/blueprint.schema.json +485 -0
- package/dist/libs/signstack/base/schemas/jsonata-function.schema.json +185 -0
- package/dist/libs/signstack/base/schemas/schema.schema.json +97 -0
- package/dist/libs/signstack/base/schemas/template.schema.json +295 -0
- package/dist/libs/signstack/base/src/index.d.ts +28 -0
- package/dist/libs/signstack/base/src/index.js +32 -0
- package/dist/libs/signstack/base/src/index.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/constants.d.ts +123 -0
- package/dist/libs/signstack/base/src/lib/constants.js +131 -0
- package/dist/libs/signstack/base/src/lib/constants.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/hash.util.d.ts +58 -0
- package/dist/libs/signstack/base/src/lib/hash.util.js +90 -0
- package/dist/libs/signstack/base/src/lib/hash.util.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/is-schema-renderable.util.d.ts +29 -0
- package/dist/libs/signstack/base/src/lib/is-schema-renderable.util.js +93 -0
- package/dist/libs/signstack/base/src/lib/is-schema-renderable.util.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/ai-chat.d.ts +41 -0
- package/dist/libs/signstack/base/src/lib/models/ai-chat.js +3 -0
- package/dist/libs/signstack/base/src/lib/models/ai-chat.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/api-key.d.ts +54 -0
- package/dist/libs/signstack/base/src/lib/models/api-key.js +18 -0
- package/dist/libs/signstack/base/src/lib/models/api-key.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/asset.d.ts +101 -0
- package/dist/libs/signstack/base/src/lib/models/asset.js +11 -0
- package/dist/libs/signstack/base/src/lib/models/asset.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/auth.d.ts +142 -0
- package/dist/libs/signstack/base/src/lib/models/auth.js +35 -0
- package/dist/libs/signstack/base/src/lib/models/auth.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/base.d.ts +134 -0
- package/dist/libs/signstack/base/src/lib/models/base.js +71 -0
- package/dist/libs/signstack/base/src/lib/models/base.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/blueprint.d.ts +311 -0
- package/dist/libs/signstack/base/src/lib/models/blueprint.js +9 -0
- package/dist/libs/signstack/base/src/lib/models/blueprint.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/file.d.ts +75 -0
- package/dist/libs/signstack/base/src/lib/models/file.js +9 -0
- package/dist/libs/signstack/base/src/lib/models/file.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/jsonata-function.d.ts +111 -0
- package/dist/libs/signstack/base/src/lib/models/jsonata-function.js +19 -0
- package/dist/libs/signstack/base/src/lib/models/jsonata-function.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/marketplace-listing.d.ts +132 -0
- package/dist/libs/signstack/base/src/lib/models/marketplace-listing.js +22 -0
- package/dist/libs/signstack/base/src/lib/models/marketplace-listing.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/membership.d.ts +127 -0
- package/dist/libs/signstack/base/src/lib/models/membership.js +22 -0
- package/dist/libs/signstack/base/src/lib/models/membership.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/namespace.d.ts +87 -0
- package/dist/libs/signstack/base/src/lib/models/namespace.js +57 -0
- package/dist/libs/signstack/base/src/lib/models/namespace.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/organization.d.ts +79 -0
- package/dist/libs/signstack/base/src/lib/models/organization.js +41 -0
- package/dist/libs/signstack/base/src/lib/models/organization.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/render-job.d.ts +88 -0
- package/dist/libs/signstack/base/src/lib/models/render-job.js +3 -0
- package/dist/libs/signstack/base/src/lib/models/render-job.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/resource-edge.d.ts +60 -0
- package/dist/libs/signstack/base/src/lib/models/resource-edge.js +202 -0
- package/dist/libs/signstack/base/src/lib/models/resource-edge.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/scenario.d.ts +138 -0
- package/dist/libs/signstack/base/src/lib/models/scenario.js +14 -0
- package/dist/libs/signstack/base/src/lib/models/scenario.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/schema.d.ts +131 -0
- package/dist/libs/signstack/base/src/lib/models/schema.js +44 -0
- package/dist/libs/signstack/base/src/lib/models/schema.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/shareable-link.d.ts +215 -0
- package/dist/libs/signstack/base/src/lib/models/shareable-link.js +27 -0
- package/dist/libs/signstack/base/src/lib/models/shareable-link.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/subscription.d.ts +279 -0
- package/dist/libs/signstack/base/src/lib/models/subscription.js +105 -0
- package/dist/libs/signstack/base/src/lib/models/subscription.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/template.d.ts +248 -0
- package/dist/libs/signstack/base/src/lib/models/template.js +32 -0
- package/dist/libs/signstack/base/src/lib/models/template.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/user.d.ts +30 -0
- package/dist/libs/signstack/base/src/lib/models/user.js +3 -0
- package/dist/libs/signstack/base/src/lib/models/user.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/webhook.d.ts +223 -0
- package/dist/libs/signstack/base/src/lib/models/webhook.js +62 -0
- package/dist/libs/signstack/base/src/lib/models/webhook.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/workflow.d.ts +917 -0
- package/dist/libs/signstack/base/src/lib/models/workflow.js +152 -0
- package/dist/libs/signstack/base/src/lib/models/workflow.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/util.d.ts +92 -0
- package/dist/libs/signstack/base/src/lib/util.js +406 -0
- package/dist/libs/signstack/base/src/lib/util.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/dependency-graph.d.ts +94 -0
- package/dist/libs/signstack/base/src/lib/validation/dependency-graph.js +446 -0
- package/dist/libs/signstack/base/src/lib/validation/dependency-graph.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/graph.types.d.ts +57 -0
- package/dist/libs/signstack/base/src/lib/validation/graph.types.js +8 -0
- package/dist/libs/signstack/base/src/lib/validation/graph.types.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/index.d.ts +9 -0
- package/dist/libs/signstack/base/src/lib/validation/index.js +23 -0
- package/dist/libs/signstack/base/src/lib/validation/index.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/resource-schemas.d.ts +3 -0
- package/dist/libs/signstack/base/src/lib/validation/resource-schemas.js +27 -0
- package/dist/libs/signstack/base/src/lib/validation/resource-schemas.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validation.types.d.ts +57 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validation.types.js +57 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validation.types.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validator.d.ts +38 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validator.js +146 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validator.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-dependencies.d.ts +22 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-dependencies.js +69 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-dependencies.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-resource-tree.d.ts +37 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-resource-tree.js +250 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-resource-tree.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-template-inputs.d.ts +24 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-template-inputs.js +98 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-template-inputs.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/yaml-document-utils.d.ts +12 -0
- package/dist/libs/signstack/base/src/lib/validation/yaml-document-utils.js +50 -0
- package/dist/libs/signstack/base/src/lib/validation/yaml-document-utils.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/yaml-spec-converter.d.ts +101 -0
- package/dist/libs/signstack/base/src/lib/yaml-spec-converter.js +998 -0
- package/dist/libs/signstack/base/src/lib/yaml-spec-converter.js.map +1 -0
- package/oclif.manifest.json +822 -0
- package/package.json +101 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import { AuthenticatedCommand } from '../lib/base-command.js';
|
|
3
|
+
import { PreviewHandler } from '../lib/preview-handler.js';
|
|
4
|
+
import { promptResourceSelection } from '../lib/resource-scanner.js';
|
|
5
|
+
import { SchemaKind } from '../types/schema.types.js';
|
|
6
|
+
export default class Preview extends AuthenticatedCommand {
|
|
7
|
+
static description = 'Preview a blueprint or template and get signed PDF URL(s)';
|
|
8
|
+
static examples = [
|
|
9
|
+
{
|
|
10
|
+
command: '<%= config.bin %> preview my_blueprint@1.0.0',
|
|
11
|
+
description: 'Preview using local files + API fallback (default)',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
command: '<%= config.bin %> preview my_blueprint',
|
|
15
|
+
description: 'Preview latest version (resolved from API)',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
command: '<%= config.bin %> preview my_blueprint@1.0.0 -p ./other-project',
|
|
19
|
+
description: 'Use a different folder for local files',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
command: '<%= config.bin %> preview my_blueprint@1.0.0 --resolve local',
|
|
23
|
+
description: 'Strict local mode — all resources must exist in files',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
command: '<%= config.bin %> preview my_blueprint@1.0.0 --resolve remote',
|
|
27
|
+
description: 'Skip local files — resolve everything from API',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
command: '<%= config.bin %> preview --template my_template@1.0.0',
|
|
31
|
+
description: 'Preview a single template',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
command: '<%= config.bin %> preview --list-scenarios',
|
|
35
|
+
description: 'List available scenarios',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
static args = {
|
|
39
|
+
blueprint: Args.string({
|
|
40
|
+
description: 'Blueprint reference as key@version (e.g., my_blueprint@1.0.0) or key (uses latest version)',
|
|
41
|
+
required: false,
|
|
42
|
+
}),
|
|
43
|
+
};
|
|
44
|
+
static flags = {
|
|
45
|
+
...AuthenticatedCommand.baseFlags,
|
|
46
|
+
blueprint: Flags.string({
|
|
47
|
+
char: 'b',
|
|
48
|
+
description: 'Blueprint reference (alternative to positional argument)',
|
|
49
|
+
exclusive: ['template'],
|
|
50
|
+
hidden: true,
|
|
51
|
+
}),
|
|
52
|
+
template: Flags.string({
|
|
53
|
+
char: 't',
|
|
54
|
+
description: 'Template reference as key@version (e.g., my_template@1.0.0) or key (uses latest version)',
|
|
55
|
+
}),
|
|
56
|
+
path: Flags.string({
|
|
57
|
+
char: 'p',
|
|
58
|
+
description: 'Folder path containing YAML resource files (default: current directory)',
|
|
59
|
+
default: '.',
|
|
60
|
+
}),
|
|
61
|
+
resolve: Flags.string({
|
|
62
|
+
char: 'r',
|
|
63
|
+
description: 'Resource resolution strategy: local (files only), remote (API only), auto (files first, API fallback)',
|
|
64
|
+
options: ['local', 'remote', 'auto'],
|
|
65
|
+
}),
|
|
66
|
+
scenario: Flags.string({
|
|
67
|
+
char: 's',
|
|
68
|
+
description: 'Scenario key for entity data (optional — auto-generates if not provided)',
|
|
69
|
+
}),
|
|
70
|
+
'list-scenarios': Flags.boolean({
|
|
71
|
+
char: 'l',
|
|
72
|
+
description: 'List available scenarios',
|
|
73
|
+
default: false,
|
|
74
|
+
}),
|
|
75
|
+
json: Flags.boolean({
|
|
76
|
+
description: 'Output in JSON format',
|
|
77
|
+
default: false,
|
|
78
|
+
}),
|
|
79
|
+
'skip-signature-fields': Flags.boolean({
|
|
80
|
+
description: 'Disable dummy signatures, initials, and auto-dates on preview',
|
|
81
|
+
default: false,
|
|
82
|
+
}),
|
|
83
|
+
};
|
|
84
|
+
async run() {
|
|
85
|
+
const { args, flags } = await this.parse(Preview);
|
|
86
|
+
const handler = this.createPreviewHandler();
|
|
87
|
+
// Handle --list-scenarios
|
|
88
|
+
if (flags['list-scenarios']) {
|
|
89
|
+
return handler.listScenarios(flags.json);
|
|
90
|
+
}
|
|
91
|
+
// Resolve blueprint from positional arg or --blueprint flag
|
|
92
|
+
const blueprintRef = args.blueprint ?? flags.blueprint;
|
|
93
|
+
// Ensure exactly one of blueprint or --template is provided
|
|
94
|
+
if (blueprintRef && flags.template) {
|
|
95
|
+
this.error('Cannot specify both a blueprint and --template. Use one or the other.', {
|
|
96
|
+
exit: 1,
|
|
97
|
+
suggestions: [
|
|
98
|
+
`signstack preview ${blueprintRef}`,
|
|
99
|
+
`signstack preview --template ${flags.template}`,
|
|
100
|
+
],
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
let kind;
|
|
104
|
+
let ref;
|
|
105
|
+
if (blueprintRef) {
|
|
106
|
+
kind = 'blueprint';
|
|
107
|
+
ref = this.sanitizeInput(blueprintRef);
|
|
108
|
+
}
|
|
109
|
+
else if (flags.template) {
|
|
110
|
+
kind = 'template';
|
|
111
|
+
ref = this.sanitizeInput(flags.template);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// No blueprint or template specified — scan folder and prompt
|
|
115
|
+
if (flags.json) {
|
|
116
|
+
this.error('Provide a blueprint reference or use --template.', {
|
|
117
|
+
exit: 1,
|
|
118
|
+
suggestions: [
|
|
119
|
+
'signstack preview my_blueprint@1.0.0 --json',
|
|
120
|
+
'signstack preview --template my_template@1.0.0 --json',
|
|
121
|
+
],
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
const selected = await promptResourceSelection(flags.path, [SchemaKind.Blueprint, SchemaKind.Template], 'Select a resource to preview');
|
|
125
|
+
if (!selected) {
|
|
126
|
+
this.error('No blueprints or templates found in the current directory.', {
|
|
127
|
+
exit: 1,
|
|
128
|
+
suggestions: [
|
|
129
|
+
'signstack preview my_blueprint@1.0.0',
|
|
130
|
+
'signstack preview --template my_template@1.0.0',
|
|
131
|
+
'Use -p to specify a different folder',
|
|
132
|
+
],
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
kind = selected.kind.toLowerCase();
|
|
136
|
+
ref = selected.ref;
|
|
137
|
+
// Use the directory containing the selected resource's YAML file
|
|
138
|
+
// so validation and file resolution work correctly
|
|
139
|
+
flags.path = selected.resourceDir;
|
|
140
|
+
}
|
|
141
|
+
const skipSignatureFields = flags['skip-signature-fields'] || undefined;
|
|
142
|
+
const combinePdfs = kind === 'blueprint' ? true : undefined;
|
|
143
|
+
const resolveMode = flags.resolve;
|
|
144
|
+
if (resolveMode === 'remote') {
|
|
145
|
+
// Explicit remote — API resolves everything
|
|
146
|
+
const { key, version } = this.parseResourceRef(ref, kind, false);
|
|
147
|
+
const run = (kind === 'blueprint' ? handler.runRemote : handler.runTemplateRemote).bind(handler);
|
|
148
|
+
await run(key, version, flags.scenario ? this.sanitizeInput(flags.scenario) : undefined, flags.json, skipSignatureFields, combinePdfs);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
// Default: hybrid (local files + API fallback)
|
|
152
|
+
// key-only refs resolve to the highest local version
|
|
153
|
+
const inlineOnly = resolveMode === 'local';
|
|
154
|
+
const run = (kind === 'blueprint' ? handler.runLocal : handler.runTemplateLocal).bind(handler);
|
|
155
|
+
await run(flags.path, ref, flags.scenario, flags.json, inlineOnly, skipSignatureFields, combinePdfs);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
createPreviewHandler() {
|
|
159
|
+
return new PreviewHandler(this.apiClient, { orgId: this.cliConfig.orgId, namespaceKey: this.cliConfig.namespaceKey }, this.log.bind(this), this.error.bind(this));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../../../../src/commands/preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from '../lib/base-command.js';
|
|
2
|
+
/**
|
|
3
|
+
* Find a unique directory name by appending (2), (3), etc. if the base name exists.
|
|
4
|
+
*/
|
|
5
|
+
export declare function findUniqueDir(parentDir: string, baseName: string): string;
|
|
6
|
+
export default class Pull extends AuthenticatedCommand {
|
|
7
|
+
static description: string;
|
|
8
|
+
static examples: {
|
|
9
|
+
command: string;
|
|
10
|
+
description: string;
|
|
11
|
+
}[];
|
|
12
|
+
static args: {
|
|
13
|
+
resource: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
14
|
+
};
|
|
15
|
+
static flags: {
|
|
16
|
+
kind: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
19
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
20
|
+
'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
};
|
|
22
|
+
run(): Promise<void>;
|
|
23
|
+
private listResourceKeys;
|
|
24
|
+
private listVersions;
|
|
25
|
+
private resolveLatestVersion;
|
|
26
|
+
private promptKindSelection;
|
|
27
|
+
private printPullSummary;
|
|
28
|
+
}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import { select } from '@inquirer/prompts';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { join, resolve } from 'node:path';
|
|
5
|
+
import pc from 'picocolors';
|
|
6
|
+
import { AuthenticatedCommand } from '../lib/base-command.js';
|
|
7
|
+
import { ResourcePuller, OrgPullSource, KIND_TO_ENDPOINT, SCHEMA_KIND_TO_BACKEND, } from '../lib/resource-puller.js';
|
|
8
|
+
import { CLI_FLAG_TO_SCHEMA_KIND, SCHEMA_FLAG_OPTIONS, } from '../types/schema.types.js';
|
|
9
|
+
/** Separator line length for output formatting */
|
|
10
|
+
const SEPARATOR_LENGTH = 50;
|
|
11
|
+
/**
|
|
12
|
+
* Find a unique directory name by appending (2), (3), etc. if the base name exists.
|
|
13
|
+
*/
|
|
14
|
+
export function findUniqueDir(parentDir, baseName) {
|
|
15
|
+
const first = join(parentDir, baseName);
|
|
16
|
+
if (!existsSync(first))
|
|
17
|
+
return first;
|
|
18
|
+
let suffix = 2;
|
|
19
|
+
while (existsSync(join(parentDir, `${baseName} (${suffix})`))) {
|
|
20
|
+
suffix++;
|
|
21
|
+
}
|
|
22
|
+
return join(parentDir, `${baseName} (${suffix})`);
|
|
23
|
+
}
|
|
24
|
+
export default class Pull extends AuthenticatedCommand {
|
|
25
|
+
static description = 'Pull a resource and all its dependencies from the API into local YAML files.';
|
|
26
|
+
static examples = [
|
|
27
|
+
{
|
|
28
|
+
command: '<%= config.bin %> pull my_blueprint --kind blueprint',
|
|
29
|
+
description: 'Pull latest active version of a blueprint and all dependencies',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
command: '<%= config.bin %> pull my_template@1.0.0 --kind template',
|
|
33
|
+
description: 'Pull a specific version of a template',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
command: '<%= config.bin %> pull my_blueprint@draft --kind blueprint',
|
|
37
|
+
description: 'Pull the draft version of a blueprint',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
command: '<%= config.bin %> pull my_template@1.0.0 --kind template -o ./my-project',
|
|
41
|
+
description: 'Pull into a specific output directory',
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
static args = {
|
|
45
|
+
resource: Args.string({
|
|
46
|
+
description: 'Resource reference as key or key@version (e.g., my_blueprint or my_blueprint@1.0.0)',
|
|
47
|
+
required: false,
|
|
48
|
+
}),
|
|
49
|
+
};
|
|
50
|
+
static flags = {
|
|
51
|
+
...AuthenticatedCommand.baseFlags,
|
|
52
|
+
kind: Flags.string({
|
|
53
|
+
char: 'k',
|
|
54
|
+
description: 'Resource kind',
|
|
55
|
+
required: false,
|
|
56
|
+
options: SCHEMA_FLAG_OPTIONS,
|
|
57
|
+
}),
|
|
58
|
+
output: Flags.string({
|
|
59
|
+
char: 'o',
|
|
60
|
+
description: 'Parent directory for the pull output (default: current directory)',
|
|
61
|
+
}),
|
|
62
|
+
verbose: Flags.boolean({
|
|
63
|
+
char: 'v',
|
|
64
|
+
description: 'Show detailed output',
|
|
65
|
+
default: false,
|
|
66
|
+
}),
|
|
67
|
+
json: Flags.boolean({
|
|
68
|
+
description: 'Output in JSON format',
|
|
69
|
+
default: false,
|
|
70
|
+
}),
|
|
71
|
+
};
|
|
72
|
+
async run() {
|
|
73
|
+
const { args, flags } = await this.parse(Pull);
|
|
74
|
+
const source = new OrgPullSource(this.cliConfig.orgId, this.cliConfig.namespaceKey);
|
|
75
|
+
const puller = new ResourcePuller(this.apiClient, source, (msg) => this.log(msg));
|
|
76
|
+
let kindFlag;
|
|
77
|
+
let key;
|
|
78
|
+
let explicitVersion;
|
|
79
|
+
if (args.resource) {
|
|
80
|
+
// Explicit resource arg — kind flag is required
|
|
81
|
+
if (!flags.kind) {
|
|
82
|
+
this.error('--kind is required when specifying a resource argument.', {
|
|
83
|
+
exit: 1,
|
|
84
|
+
suggestions: SCHEMA_FLAG_OPTIONS.map((k) => `--kind ${k}`),
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
const ref = this.sanitizeInput(args.resource);
|
|
88
|
+
kindFlag = flags.kind;
|
|
89
|
+
const parsed = this.parseResourceRef(ref, kindFlag, false);
|
|
90
|
+
key = parsed.key;
|
|
91
|
+
explicitVersion = parsed.version;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// Interactive mode
|
|
95
|
+
if (flags.json) {
|
|
96
|
+
this.error('Resource argument is required in --json mode (non-interactive).', { exit: 1 });
|
|
97
|
+
}
|
|
98
|
+
// Step 1: Prompt for kind
|
|
99
|
+
kindFlag = flags.kind ?? await this.promptKindSelection();
|
|
100
|
+
// Step 2: Fetch resources of that kind and prompt for selection
|
|
101
|
+
const schemaKind = CLI_FLAG_TO_SCHEMA_KIND[kindFlag];
|
|
102
|
+
const backendKind = SCHEMA_KIND_TO_BACKEND[schemaKind];
|
|
103
|
+
const resources = await this.listResourceKeys(backendKind);
|
|
104
|
+
if (resources.length === 0) {
|
|
105
|
+
this.error(`No ${kindFlag} resources found.`, { exit: 1 });
|
|
106
|
+
}
|
|
107
|
+
const choices = resources
|
|
108
|
+
.sort((a, b) => a.key.localeCompare(b.key))
|
|
109
|
+
.map((r) => ({
|
|
110
|
+
name: `${r.key}${r.name ? pc.dim(` — ${r.name}`) : ''}`,
|
|
111
|
+
value: r.key,
|
|
112
|
+
}));
|
|
113
|
+
key = await select({
|
|
114
|
+
message: `Select a ${kindFlag}`,
|
|
115
|
+
choices,
|
|
116
|
+
loop: false,
|
|
117
|
+
});
|
|
118
|
+
// Step 3: Fetch versions and prompt for selection
|
|
119
|
+
const versions = await this.listVersions(backendKind, key);
|
|
120
|
+
if (versions.length === 0) {
|
|
121
|
+
this.error(`No versions found for ${kindFlag}:${key}.`, { exit: 1 });
|
|
122
|
+
}
|
|
123
|
+
if (versions.length === 1) {
|
|
124
|
+
explicitVersion = versions[0];
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
const versionChoices = versions.map((v) => ({
|
|
128
|
+
name: v,
|
|
129
|
+
value: v,
|
|
130
|
+
}));
|
|
131
|
+
explicitVersion = await select({
|
|
132
|
+
message: `Select a version`,
|
|
133
|
+
choices: versionChoices,
|
|
134
|
+
loop: false,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const schemaKind = CLI_FLAG_TO_SCHEMA_KIND[kindFlag];
|
|
139
|
+
const backendKind = SCHEMA_KIND_TO_BACKEND[schemaKind];
|
|
140
|
+
// Validate key
|
|
141
|
+
if (key.includes('..') || key.includes('/') || key.includes('\\')) {
|
|
142
|
+
this.error(`Invalid resource key: "${key}". Key cannot contain path traversal characters.`, { exit: 1 });
|
|
143
|
+
}
|
|
144
|
+
// Resolve version
|
|
145
|
+
let version;
|
|
146
|
+
if (explicitVersion) {
|
|
147
|
+
version = explicitVersion;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
this.log(pc.dim(`Resolving latest version for ${kindFlag}:${key}...`));
|
|
151
|
+
const resolved = await this.resolveLatestVersion(backendKind, key);
|
|
152
|
+
if (!resolved) {
|
|
153
|
+
this.error(`Resource ${kindFlag}:${key} not found.`, { exit: 1 });
|
|
154
|
+
}
|
|
155
|
+
version = resolved;
|
|
156
|
+
this.log(pc.dim(`Resolved to version ${version}\n`));
|
|
157
|
+
}
|
|
158
|
+
// Determine output directory
|
|
159
|
+
const parentDir = resolve(flags.output ?? '.');
|
|
160
|
+
const folderName = `${key}@${version}`;
|
|
161
|
+
const outputDir = findUniqueDir(parentDir, folderName);
|
|
162
|
+
this.log(pc.cyan(`\nPulling ${kindFlag} ${key}@${version} into ${outputDir}\n`));
|
|
163
|
+
// Pull resources
|
|
164
|
+
const summary = await puller.pull({
|
|
165
|
+
kind: backendKind,
|
|
166
|
+
key,
|
|
167
|
+
version,
|
|
168
|
+
outputDir,
|
|
169
|
+
verbose: flags.verbose,
|
|
170
|
+
});
|
|
171
|
+
// Print summary
|
|
172
|
+
if (flags.json) {
|
|
173
|
+
this.log(JSON.stringify(summary));
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
this.printPullSummary(summary);
|
|
177
|
+
}
|
|
178
|
+
if (summary.failed > 0) {
|
|
179
|
+
this.exit(1);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
// ─── Interactive browse helpers (org-scoped) ─────────────────
|
|
183
|
+
async listResourceKeys(backendKind) {
|
|
184
|
+
const endpoint = KIND_TO_ENDPOINT[backendKind];
|
|
185
|
+
if (!endpoint)
|
|
186
|
+
return [];
|
|
187
|
+
const resp = await this.apiClient.get(`/v1/orgs/${this.cliConfig.orgId}/namespaces/${this.cliConfig.namespaceKey}/${endpoint}?limit=50`);
|
|
188
|
+
return resp.data.map((r) => ({
|
|
189
|
+
key: r.metadata.key,
|
|
190
|
+
name: r.metadata.name,
|
|
191
|
+
}));
|
|
192
|
+
}
|
|
193
|
+
async listVersions(backendKind, key) {
|
|
194
|
+
const endpoint = KIND_TO_ENDPOINT[backendKind];
|
|
195
|
+
if (!endpoint)
|
|
196
|
+
return [];
|
|
197
|
+
const resp = await this.apiClient.get(`/v1/orgs/${this.cliConfig.orgId}/namespaces/${this.cliConfig.namespaceKey}/${endpoint}/${encodeURIComponent(key)}/versions?limit=50`);
|
|
198
|
+
return resp.data.map((r) => r.metadata.version);
|
|
199
|
+
}
|
|
200
|
+
async resolveLatestVersion(backendKind, key) {
|
|
201
|
+
const endpoint = KIND_TO_ENDPOINT[backendKind];
|
|
202
|
+
if (!endpoint)
|
|
203
|
+
return null;
|
|
204
|
+
try {
|
|
205
|
+
const resp = await this.apiClient.get(`/v1/orgs/${this.cliConfig.orgId}/namespaces/${this.cliConfig.namespaceKey}/${endpoint}/${encodeURIComponent(key)}/versions?skipDraft=true&limit=1`);
|
|
206
|
+
if (resp.data.length > 0) {
|
|
207
|
+
return resp.data[0].metadata.version;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
// Resource doesn't exist
|
|
212
|
+
}
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
async promptKindSelection() {
|
|
216
|
+
const choices = SCHEMA_FLAG_OPTIONS.map((k) => ({
|
|
217
|
+
name: k,
|
|
218
|
+
value: k,
|
|
219
|
+
}));
|
|
220
|
+
return select({
|
|
221
|
+
message: 'Select a resource kind',
|
|
222
|
+
choices,
|
|
223
|
+
loop: false,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
printPullSummary(summary) {
|
|
227
|
+
this.log(pc.dim('\n' + '─'.repeat(SEPARATOR_LENGTH)));
|
|
228
|
+
this.log(`\nPull complete: ${summary.total} resource(s) written to ${summary.outputDir}/\n`);
|
|
229
|
+
// Print counts by kind
|
|
230
|
+
for (const [kind, count] of Object.entries(summary.byKind)) {
|
|
231
|
+
this.log(` ${kind}: ${pc.green(String(count))}`);
|
|
232
|
+
}
|
|
233
|
+
if (summary.failed > 0) {
|
|
234
|
+
this.log(pc.red(`\n Failed: ${summary.failed}`));
|
|
235
|
+
for (const r of summary.results) {
|
|
236
|
+
if (!r.success) {
|
|
237
|
+
this.log(pc.red(` ${r.kind}:${r.key}@${r.version} - ${r.error}`));
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
this.log('');
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=pull.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../../../src/commands/pull.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from '../lib/base-command.js';
|
|
2
|
+
export default class Push extends AuthenticatedCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: {
|
|
5
|
+
command: string;
|
|
6
|
+
description: string;
|
|
7
|
+
}[];
|
|
8
|
+
static args: {
|
|
9
|
+
resource: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
10
|
+
};
|
|
11
|
+
static flags: {
|
|
12
|
+
kind: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
dir: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
17
|
+
'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
};
|
|
19
|
+
run(): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Resolve the resource kind — from --kind flag or inferred from YAML files.
|
|
22
|
+
*/
|
|
23
|
+
private resolveResourceKind;
|
|
24
|
+
/**
|
|
25
|
+
* Run schema validation on all documents in topological order.
|
|
26
|
+
* Also validates dependencies and file references.
|
|
27
|
+
* Returns true if all validations pass.
|
|
28
|
+
*/
|
|
29
|
+
private runValidation;
|
|
30
|
+
/**
|
|
31
|
+
* Print a validation error
|
|
32
|
+
*/
|
|
33
|
+
private printValidationError;
|
|
34
|
+
/**
|
|
35
|
+
* Print the push plan showing what will be created in what order
|
|
36
|
+
*/
|
|
37
|
+
private printPushPlan;
|
|
38
|
+
/**
|
|
39
|
+
* Push all resources in topological order
|
|
40
|
+
*/
|
|
41
|
+
private pushResources;
|
|
42
|
+
/**
|
|
43
|
+
* Print push summary
|
|
44
|
+
*/
|
|
45
|
+
private printPushSummary;
|
|
46
|
+
}
|