aws-cdk
Version:
AWS CDK CLI, the command line tool for CDK apps
812 lines • 103 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseCommandLineArguments = parseCommandLineArguments;
const helpers = require("./util/yargs-helpers");
// @ts-ignore TS6133
function parseCommandLineArguments(args) {
return yargs
.env('CDK')
.usage('Usage: cdk -a <cdk-app> COMMAND')
.option('app', {
default: undefined,
type: 'string',
alias: 'a',
desc: 'REQUIRED WHEN RUNNING APP: command-line for executing your app or a cloud assembly directory (e.g. "node bin/my-app.js"). Can also be specified in cdk.json or ~/.cdk.json',
requiresArg: true,
})
.option('build', {
default: undefined,
type: 'string',
desc: 'Command-line for a pre-synth build',
})
.option('context', {
type: 'array',
alias: 'c',
desc: 'Add contextual string parameter (KEY=VALUE)',
nargs: 1,
requiresArg: true,
})
.option('plugin', {
type: 'array',
alias: 'p',
desc: 'Name or path of a node package that extend the CDK features. Can be specified multiple times',
nargs: 1,
requiresArg: true,
})
.option('trace', {
default: undefined,
type: 'boolean',
desc: 'Print trace for stack warnings',
})
.option('strict', {
default: undefined,
type: 'boolean',
desc: 'Do not construct stacks with warnings',
})
.option('lookups', {
default: true,
type: 'boolean',
desc: 'Perform context lookups (synthesis fails if this is disabled and context lookups need to be performed)',
})
.option('ignore-errors', {
default: false,
type: 'boolean',
desc: 'Ignores synthesis errors, which will likely produce an invalid output',
})
.option('json', {
default: false,
type: 'boolean',
alias: 'j',
desc: 'Use JSON output instead of YAML when templates are printed to STDOUT',
})
.option('verbose', {
default: false,
type: 'boolean',
alias: 'v',
desc: 'Show debug logs (specify multiple times to increase verbosity)',
count: true,
})
.option('debug', {
default: false,
type: 'boolean',
desc: 'Debug the CDK app. Log additional information during synthesis, such as creation stack traces of tokens (sets CDK_DEBUG, will slow down synthesis)',
})
.option('profile', {
default: undefined,
type: 'string',
desc: 'Use the indicated AWS profile as the default environment',
requiresArg: true,
})
.option('proxy', {
default: undefined,
type: 'string',
desc: 'Use the indicated proxy. Will read from HTTPS_PROXY environment variable if not specified',
requiresArg: true,
})
.option('ca-bundle-path', {
default: undefined,
type: 'string',
desc: 'Path to CA certificate to use when validating HTTPS requests. Will read from AWS_CA_BUNDLE environment variable if not specified',
requiresArg: true,
})
.option('ec2creds', {
default: undefined,
type: 'boolean',
alias: 'i',
desc: 'Force trying to fetch EC2 instance credentials. Default: guess EC2 instance status',
})
.option('version-reporting', {
default: undefined,
type: 'boolean',
desc: 'Include the "AWS::CDK::Metadata" resource in synthesized templates (enabled by default)',
})
.option('path-metadata', {
default: undefined,
type: 'boolean',
desc: 'Include "aws:cdk:path" CloudFormation metadata for each resource (enabled by default)',
})
.option('asset-metadata', {
default: undefined,
type: 'boolean',
desc: 'Include "aws:asset:*" CloudFormation metadata for resources that uses assets (enabled by default)',
})
.option('role-arn', {
default: undefined,
type: 'string',
alias: 'r',
desc: 'ARN of Role to use when invoking CloudFormation',
requiresArg: true,
})
.option('staging', {
default: true,
type: 'boolean',
desc: 'Copy assets to the output directory (use --no-staging to disable the copy of assets which allows local debugging via the SAM CLI to reference the original source files)',
})
.option('output', {
default: undefined,
type: 'string',
alias: 'o',
desc: 'Emits the synthesized cloud assembly into a directory (default: cdk.out)',
requiresArg: true,
})
.option('notices', {
default: undefined,
type: 'boolean',
desc: 'Show relevant notices',
})
.option('no-color', {
default: false,
type: 'boolean',
desc: 'Removes colors and other style from console output',
})
.option('ci', {
default: helpers.isCI(),
type: 'boolean',
desc: 'Force CI detection. If CI=true then logs will be sent to stdout instead of stderr',
})
.option('unstable', {
type: 'array',
desc: 'Opt in to unstable features. The flag indicates that the scope and API of a feature might still change. Otherwise the feature is generally production ready and fully supported. Can be specified multiple times.',
default: [],
nargs: 1,
requiresArg: true,
})
.command(['list [STACKS..]', 'ls [STACKS..]'], 'Lists all stacks in the app', (yargs) => yargs
.option('long', {
default: false,
type: 'boolean',
alias: 'l',
desc: 'Display environment information for each stack',
})
.option('show-dependencies', {
default: false,
type: 'boolean',
alias: 'd',
desc: 'Display stack dependency information for each stack',
}))
.command(['synth [STACKS..]', 'synthesize [STACKS..]'], 'Synthesizes and prints the CloudFormation template for this stack', (yargs) => yargs
.option('exclusively', {
default: undefined,
type: 'boolean',
alias: 'e',
desc: "Only synthesize requested stacks, don't include dependencies",
})
.option('validation', {
default: true,
type: 'boolean',
desc: 'After synthesis, validate stacks with the "validateOnSynth" attribute set (can also be controlled with CDK_VALIDATION)',
})
.option('quiet', {
default: false,
type: 'boolean',
alias: 'q',
desc: 'Do not output CloudFormation Template to stdout',
}))
.command('bootstrap [ENVIRONMENTS..]', 'Deploys the CDK toolkit stack into an AWS environment', (yargs) => yargs
.option('bootstrap-bucket-name', {
default: undefined,
type: 'string',
alias: ['b', 'toolkit-bucket-name'],
desc: 'The name of the CDK toolkit bucket; bucket will be created and must not exist',
})
.option('bootstrap-kms-key-id', {
default: undefined,
type: 'string',
desc: 'AWS KMS master key ID used for the SSE-KMS encryption',
conflicts: 'bootstrap-customer-key',
})
.option('example-permissions-boundary', {
default: undefined,
type: 'boolean',
alias: 'epb',
desc: 'Use the example permissions boundary.',
conflicts: 'custom-permissions-boundary',
})
.option('custom-permissions-boundary', {
default: undefined,
type: 'string',
alias: 'cpb',
desc: 'Use the permissions boundary specified by name.',
conflicts: 'example-permissions-boundary',
})
.option('bootstrap-customer-key', {
default: undefined,
type: 'boolean',
desc: 'Create a Customer Master Key (CMK) for the bootstrap bucket (you will be charged but can customize permissions, modern bootstrapping only)',
conflicts: 'bootstrap-kms-key-id',
})
.option('qualifier', {
default: undefined,
type: 'string',
desc: 'String which must be unique for each bootstrap stack. You must configure it on your CDK app if you change this from the default.',
})
.option('public-access-block-configuration', {
default: undefined,
type: 'boolean',
desc: 'Block public access configuration on CDK toolkit bucket (enabled by default) ',
})
.option('tags', {
type: 'array',
alias: 't',
desc: 'Tags to add for the stack (KEY=VALUE)',
default: [],
nargs: 1,
requiresArg: true,
})
.option('execute', {
default: true,
type: 'boolean',
desc: 'Whether to execute ChangeSet (--no-execute will NOT execute the ChangeSet)',
})
.option('trust', {
type: 'array',
desc: 'The AWS account IDs that should be trusted to perform deployments into this environment (may be repeated, modern bootstrapping only)',
default: [],
nargs: 1,
requiresArg: true,
})
.option('trust-for-lookup', {
type: 'array',
desc: 'The AWS account IDs that should be trusted to look up values in this environment (may be repeated, modern bootstrapping only)',
default: [],
nargs: 1,
requiresArg: true,
})
.option('untrust', {
type: 'array',
desc: 'The AWS account IDs that should not be trusted by this environment (may be repeated, modern bootstrapping only)',
default: [],
nargs: 1,
requiresArg: true,
})
.option('cloudformation-execution-policies', {
type: 'array',
desc: 'The Managed Policy ARNs that should be attached to the role performing deployments into this environment (may be repeated, modern bootstrapping only)',
default: [],
nargs: 1,
requiresArg: true,
})
.option('force', {
default: false,
alias: 'f',
type: 'boolean',
desc: 'Always bootstrap even if it would downgrade template version',
})
.option('termination-protection', {
default: undefined,
type: 'boolean',
desc: 'Toggle CloudFormation termination protection on the bootstrap stacks',
})
.option('show-template', {
default: false,
type: 'boolean',
desc: "Instead of actual bootstrapping, print the current CLI's bootstrapping template to stdout for customization",
})
.option('toolkit-stack-name', {
default: undefined,
type: 'string',
desc: 'The name of the CDK toolkit stack to create',
requiresArg: true,
})
.option('template', {
default: undefined,
type: 'string',
requiresArg: true,
desc: 'Use the template from the given file instead of the built-in one (use --show-template to obtain an example)',
})
.option('previous-parameters', {
default: true,
type: 'boolean',
desc: 'Use previous values for existing parameters (you must specify all parameters on every deployment if this is disabled)',
}))
.command('gc [ENVIRONMENTS..]', 'Garbage collect assets. Options detailed here: https://github.com/aws/aws-cdk-cli/tree/main/packages/aws-cdk#cdk-gc', (yargs) => yargs
.option('action', {
default: 'full',
type: 'string',
desc: 'The action (or sub-action) you want to perform. Valid entires are "print", "tag", "delete-tagged", "full".',
})
.option('type', {
default: 'all',
type: 'string',
desc: 'Specify either ecr, s3, or all',
})
.option('rollback-buffer-days', {
default: 0,
type: 'number',
desc: 'Delete assets that have been marked as isolated for this many days',
})
.option('created-buffer-days', {
default: 1,
type: 'number',
desc: 'Never delete assets younger than this (in days)',
})
.option('confirm', {
default: true,
type: 'boolean',
desc: 'Confirm via manual prompt before deletion',
})
.option('bootstrap-stack-name', {
default: undefined,
type: 'string',
desc: 'The name of the CDK toolkit stack, if different from the default "CDKToolkit"',
requiresArg: true,
}))
.command('deploy [STACKS..]', 'Deploys the stack(s) named STACKS into your AWS account', (yargs) => yargs
.option('all', {
default: false,
type: 'boolean',
desc: 'Deploy all available stacks',
})
.option('build-exclude', {
type: 'array',
alias: 'E',
desc: 'Do not rebuild asset with the given ID. Can be specified multiple times',
default: [],
nargs: 1,
requiresArg: true,
})
.option('exclusively', {
default: undefined,
type: 'boolean',
alias: 'e',
desc: "Only deploy requested stacks, don't include dependencies",
})
.option('require-approval', {
default: undefined,
type: 'string',
choices: ['never', 'any-change', 'broadening'],
desc: 'What security-sensitive changes need manual approval',
})
.option('notification-arns', {
type: 'array',
desc: "ARNs of SNS topics that CloudFormation will notify with stack related events. These will be added to ARNs specified with the 'notificationArns' stack property.",
nargs: 1,
requiresArg: true,
})
.option('tags', {
type: 'array',
alias: 't',
desc: 'Tags to add to the stack (KEY=VALUE), overrides tags from Cloud Assembly (deprecated)',
nargs: 1,
requiresArg: true,
})
.option('execute', {
default: undefined,
type: 'boolean',
desc: 'Whether to execute ChangeSet (--no-execute will NOT execute the ChangeSet) (deprecated)',
deprecated: true,
})
.option('change-set-name', {
default: undefined,
type: 'string',
desc: 'Name of the CloudFormation change set to create (only if method is not direct)',
})
.option('method', {
default: undefined,
alias: 'm',
type: 'string',
choices: ['direct', 'change-set', 'prepare-change-set'],
requiresArg: true,
desc: 'How to perform the deployment. Direct is a bit faster but lacks progress information',
})
.option('import-existing-resources', {
default: false,
type: 'boolean',
desc: 'Indicates if the stack set imports resources that already exist.',
})
.option('force', {
default: false,
alias: 'f',
type: 'boolean',
desc: 'Always deploy stack even if templates are identical',
})
.option('parameters', {
type: 'array',
desc: 'Additional parameters passed to CloudFormation at deploy time (STACK:KEY=VALUE)',
default: {},
nargs: 1,
requiresArg: true,
})
.option('outputs-file', {
default: undefined,
type: 'string',
alias: 'O',
desc: 'Path to file where stack outputs will be written as JSON',
requiresArg: true,
})
.option('previous-parameters', {
default: true,
type: 'boolean',
desc: 'Use previous values for existing parameters (you must specify all parameters on every deployment if this is disabled)',
})
.option('toolkit-stack-name', {
default: undefined,
type: 'string',
desc: 'The name of the existing CDK toolkit stack (only used for app using legacy synthesis)',
requiresArg: true,
})
.option('progress', {
default: undefined,
type: 'string',
choices: ['bar', 'events'],
desc: 'Display mode for stack activity events',
})
.option('rollback', {
default: undefined,
type: 'boolean',
desc: "Rollback stack to stable state on failure. Defaults to 'true', iterate more rapidly with --no-rollback or -R. Note: do **not** disable this flag for deployments with resource replacements, as that will always fail",
})
.option('R', { type: 'boolean', hidden: true })
.middleware(helpers.yargsNegativeAlias('R', 'rollback'), true)
.option('hotswap', {
default: undefined,
type: 'boolean',
desc: "Attempts to perform a 'hotswap' deployment, but does not fall back to a full deployment if that is not possible. Instead, changes to any non-hotswappable properties are ignored.Do not use this in production environments",
})
.option('hotswap-fallback', {
default: undefined,
type: 'boolean',
desc: "Attempts to perform a 'hotswap' deployment, which skips CloudFormation and updates the resources directly, and falls back to a full deployment if that is not possible. Do not use this in production environments",
})
.option('watch', {
default: undefined,
type: 'boolean',
desc: 'Continuously observe the project files, and deploy the given stack(s) automatically when changes are detected. Implies --hotswap by default',
})
.option('logs', {
default: true,
type: 'boolean',
desc: "Show CloudWatch log events from all resources in the selected Stacks in the terminal. 'true' by default, use --no-logs to turn off. Only in effect if specified alongside the '--watch' option",
})
.option('concurrency', {
default: 1,
type: 'number',
desc: 'Maximum number of simultaneous deployments (dependency permitting) to execute.',
requiresArg: true,
})
.option('asset-parallelism', {
default: undefined,
type: 'boolean',
desc: 'Whether to build/publish assets in parallel',
})
.option('asset-prebuild', {
default: true,
type: 'boolean',
desc: 'Whether to build all assets before deploying the first stack (useful for failing Docker builds)',
})
.option('ignore-no-stacks', {
default: false,
type: 'boolean',
desc: 'Whether to deploy if the app contains no stacks',
}))
.command('rollback [STACKS..]', 'Rolls back the stack(s) named STACKS to their last stable state', (yargs) => yargs
.option('all', {
default: false,
type: 'boolean',
desc: 'Roll back all available stacks',
})
.option('toolkit-stack-name', {
default: undefined,
type: 'string',
desc: 'The name of the CDK toolkit stack the environment is bootstrapped with',
requiresArg: true,
})
.option('force', {
default: undefined,
alias: 'f',
type: 'boolean',
desc: 'Orphan all resources for which the rollback operation fails.',
})
.option('validate-bootstrap-version', {
default: undefined,
type: 'boolean',
desc: "Whether to validate the bootstrap stack version. Defaults to 'true', disable with --no-validate-bootstrap-version.",
})
.option('orphan', {
type: 'array',
desc: 'Orphan the given resources, identified by their logical ID (can be specified multiple times)',
default: [],
nargs: 1,
requiresArg: true,
}))
.command('import [STACK]', 'Import existing resource(s) into the given STACK', (yargs) => yargs
.option('execute', {
default: true,
type: 'boolean',
desc: 'Whether to execute ChangeSet (--no-execute will NOT execute the ChangeSet)',
})
.option('change-set-name', {
default: undefined,
type: 'string',
desc: 'Name of the CloudFormation change set to create',
})
.option('toolkit-stack-name', {
default: undefined,
type: 'string',
desc: 'The name of the CDK toolkit stack to create',
requiresArg: true,
})
.option('rollback', {
default: undefined,
type: 'boolean',
desc: "Rollback stack to stable state on failure. Defaults to 'true', iterate more rapidly with --no-rollback or -R. Note: do **not** disable this flag for deployments with resource replacements, as that will always fail",
})
.option('force', {
default: undefined,
alias: 'f',
type: 'boolean',
desc: "Do not abort if the template diff includes updates or deletes. This is probably safe but we're not sure, let us know how it goes.",
})
.option('record-resource-mapping', {
default: undefined,
type: 'string',
alias: 'r',
requiresArg: true,
desc: 'If specified, CDK will generate a mapping of existing physical resources to CDK resources to be imported as. The mapping will be written in the given file path. No actual import operation will be performed',
})
.option('resource-mapping', {
default: undefined,
type: 'string',
alias: 'm',
requiresArg: true,
desc: 'If specified, CDK will use the given file to map physical resources to CDK resources for import, instead of interactively asking the user. Can be run from scripts',
}))
.command('watch [STACKS..]', "Shortcut for 'deploy --watch'", (yargs) => yargs
.option('build-exclude', {
type: 'array',
alias: 'E',
desc: 'Do not rebuild asset with the given ID. Can be specified multiple times',
default: [],
nargs: 1,
requiresArg: true,
})
.option('exclusively', {
default: undefined,
type: 'boolean',
alias: 'e',
desc: "Only deploy requested stacks, don't include dependencies",
})
.option('change-set-name', {
default: undefined,
type: 'string',
desc: 'Name of the CloudFormation change set to create',
})
.option('force', {
default: false,
alias: 'f',
type: 'boolean',
desc: 'Always deploy stack even if templates are identical',
})
.option('toolkit-stack-name', {
default: undefined,
type: 'string',
desc: 'The name of the existing CDK toolkit stack (only used for app using legacy synthesis)',
requiresArg: true,
})
.option('progress', {
default: undefined,
type: 'string',
choices: ['bar', 'events'],
desc: 'Display mode for stack activity events',
})
.option('rollback', {
default: undefined,
type: 'boolean',
desc: "Rollback stack to stable state on failure. Defaults to 'true', iterate more rapidly with --no-rollback or -R. Note: do **not** disable this flag for deployments with resource replacements, as that will always fail",
})
.option('R', { type: 'boolean', hidden: true })
.middleware(helpers.yargsNegativeAlias('R', 'rollback'), true)
.option('hotswap', {
default: undefined,
type: 'boolean',
desc: "Attempts to perform a 'hotswap' deployment, but does not fall back to a full deployment if that is not possible. Instead, changes to any non-hotswappable properties are ignored.'true' by default, use --no-hotswap to turn off",
})
.option('hotswap-fallback', {
default: undefined,
type: 'boolean',
desc: "Attempts to perform a 'hotswap' deployment, which skips CloudFormation and updates the resources directly, and falls back to a full deployment if that is not possible.",
})
.option('logs', {
default: true,
type: 'boolean',
desc: "Show CloudWatch log events from all resources in the selected Stacks in the terminal. 'true' by default, use --no-logs to turn off",
})
.option('concurrency', {
default: 1,
type: 'number',
desc: 'Maximum number of simultaneous deployments (dependency permitting) to execute.',
requiresArg: true,
}))
.command('destroy [STACKS..]', 'Destroy the stack(s) named STACKS', (yargs) => yargs
.option('all', {
default: false,
type: 'boolean',
desc: 'Destroy all available stacks',
})
.option('exclusively', {
default: undefined,
type: 'boolean',
alias: 'e',
desc: "Only destroy requested stacks, don't include dependees",
})
.option('force', {
default: undefined,
type: 'boolean',
alias: 'f',
desc: 'Do not ask for confirmation before destroying the stacks',
}))
.command('diff [STACKS..]', 'Compares the specified stack with the deployed stack or a local template file, and returns with status 1 if any difference is found', (yargs) => yargs
.option('exclusively', {
default: undefined,
type: 'boolean',
alias: 'e',
desc: "Only diff requested stacks, don't include dependencies",
})
.option('context-lines', {
default: 3,
type: 'number',
desc: 'Number of context lines to include in arbitrary JSON diff rendering',
requiresArg: true,
})
.option('template', {
default: undefined,
type: 'string',
desc: 'The path to the CloudFormation template to compare with',
requiresArg: true,
})
.option('strict', {
default: false,
type: 'boolean',
desc: 'Do not filter out AWS::CDK::Metadata resources, mangled non-ASCII characters, or the CheckBootstrapVersionRule',
})
.option('security-only', {
default: false,
type: 'boolean',
desc: 'Only diff for broadened security changes',
})
.option('fail', {
default: undefined,
type: 'boolean',
desc: 'Fail with exit code 1 in case of diff',
})
.option('processed', {
default: false,
type: 'boolean',
desc: 'Whether to compare against the template with Transforms already processed',
})
.option('quiet', {
default: false,
type: 'boolean',
alias: 'q',
desc: 'Do not print stack name and default message when there is no diff to stdout',
})
.option('change-set', {
default: true,
type: 'boolean',
alias: 'changeset',
desc: 'Whether to create a changeset to analyze resource replacements. In this mode, diff will use the deploy role instead of the lookup role.',
}))
.command('metadata [STACK]', 'Returns all metadata associated with this stack')
.command(['acknowledge [ID]', 'ack [ID]'], 'Acknowledge a notice so that it does not show up anymore')
.command('notices', 'Returns a list of relevant notices', (yargs) => yargs.option('unacknowledged', {
default: false,
type: 'boolean',
alias: 'u',
desc: 'Returns a list of unacknowledged notices',
}))
.command('init [TEMPLATE]', 'Create a new, empty CDK project from a template.', (yargs) => yargs
.option('language', {
default: undefined,
type: 'string',
alias: 'l',
desc: 'The language to be used for the new project (default can be configured in ~/.cdk.json)',
choices: ['csharp', 'fsharp', 'go', 'java', 'javascript', 'python', 'typescript'],
})
.option('list', {
default: undefined,
type: 'boolean',
desc: 'List the available templates',
})
.option('generate-only', {
default: false,
type: 'boolean',
desc: 'If true, only generates project files, without executing additional operations such as setting up a git repo, installing dependencies or compiling the project',
})
.option('lib-version', {
default: undefined,
type: 'string',
alias: 'V',
desc: 'The version of the CDK library (aws-cdk-lib) to initialize the project with. Defaults to the version that was current when this CLI was built.',
}))
.command('migrate', 'Migrate existing AWS resources into a CDK app', (yargs) => yargs
.option('stack-name', {
default: undefined,
type: 'string',
alias: 'n',
desc: 'The name assigned to the stack created in the new project. The name of the app will be based off this name as well.',
requiresArg: true,
})
.option('language', {
default: 'typescript',
type: 'string',
alias: 'l',
desc: 'The language to be used for the new project',
choices: ['typescript', 'go', 'java', 'python', 'csharp'],
})
.option('account', {
default: undefined,
type: 'string',
desc: 'The account to retrieve the CloudFormation stack template from',
})
.option('region', {
default: undefined,
type: 'string',
desc: 'The region to retrieve the CloudFormation stack template from',
})
.option('from-path', {
default: undefined,
type: 'string',
desc: 'The path to the CloudFormation template to migrate. Use this for locally stored templates',
})
.option('from-stack', {
default: undefined,
type: 'boolean',
desc: 'Use this flag to retrieve the template for an existing CloudFormation stack',
})
.option('output-path', {
default: undefined,
type: 'string',
desc: 'The output path for the migrated CDK app',
})
.option('from-scan', {
default: undefined,
type: 'string',
desc: 'Determines if a new scan should be created, or the last successful existing scan should be used \n options are "new" or "most-recent"',
})
.option('filter', {
type: 'array',
desc: 'Filters the resource scan based on the provided criteria in the following format: "key1=value1,key2=value2"\n This field can be passed multiple times for OR style filtering: \n filtering options: \n resource-identifier: A key-value pair that identifies the target resource. i.e. {"ClusterName", "myCluster"}\n resource-type-prefix: A string that represents a type-name prefix. i.e. "AWS::DynamoDB::"\n tag-key: a string that matches resources with at least one tag with the provided key. i.e. "myTagKey"\n tag-value: a string that matches resources with at least one tag with the provided value. i.e. "myTagValue"',
nargs: 1,
requiresArg: true,
})
.option('compress', {
default: undefined,
type: 'boolean',
desc: 'Use this flag to zip the generated CDK app',
}))
.command('context', 'Manage cached context values', (yargs) => yargs
.option('reset', {
default: undefined,
alias: 'e',
desc: 'The context key (or its index) to reset',
type: 'string',
requiresArg: true,
})
.option('force', {
default: false,
alias: 'f',
desc: 'Ignore missing key error',
type: 'boolean',
})
.option('clear', {
default: false,
desc: 'Clear all context',
type: 'boolean',
}))
.command(['docs', 'doc'], 'Opens the reference documentation in a browser', (yargs) => yargs.option('browser', {
default: helpers.browserForPlatform(),
alias: 'b',
desc: 'the command to use to open the browser, using %u as a placeholder for the path of the file to open',
type: 'string',
}))
.command('doctor', 'Check your set-up for potential problems')
.version(helpers.cliVersion())
.demandCommand(1, '')
.recommendCommands()
.help()
.alias('h', 'help')
.epilogue('If your app has a single stack, there is no need to specify the stack name\n\nIf one of cdk.json or ~/.cdk.json exists, options specified there will be used as defaults. Settings in cdk.json take precedence.')
.parse(args);
} // eslint-disable-next-line @typescript-eslint/no-require-imports
const yargs = require('yargs');
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtY29tbWFuZC1saW5lLWFyZ3VtZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBhcnNlLWNvbW1hbmQtbGluZS1hcmd1bWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTQSw4REEwMEJDO0FBNzBCRCxnREFBZ0Q7QUFFaEQsb0JBQW9CO0FBQ3BCLFNBQWdCLHlCQUF5QixDQUFDLElBQW1CO0lBQzNELE9BQU8sS0FBSztTQUNULEdBQUcsQ0FBQyxLQUFLLENBQUM7U0FDVixLQUFLLENBQUMsaUNBQWlDLENBQUM7U0FDeEMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNiLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLElBQUksRUFBRSxRQUFRO1FBQ2QsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUsNEtBQTRLO1FBQ2xMLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUM7U0FDRCxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2YsT0FBTyxFQUFFLFNBQVM7UUFDbEIsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUsb0NBQW9DO0tBQzNDLENBQUM7U0FDRCxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLElBQUksRUFBRSxPQUFPO1FBQ2IsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUsNkNBQTZDO1FBQ25ELEtBQUssRUFBRSxDQUFDO1FBQ1IsV0FBVyxFQUFFLElBQUk7S0FDbEIsQ0FBQztTQUNELE1BQU0sQ0FBQyxRQUFRLEVBQUU7UUFDaEIsSUFBSSxFQUFFLE9BQU87UUFDYixLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSw4RkFBOEY7UUFDcEcsS0FBSyxFQUFFLENBQUM7UUFDUixXQUFXLEVBQUUsSUFBSTtLQUNsQixDQUFDO1NBQ0QsTUFBTSxDQUFDLE9BQU8sRUFBRTtRQUNmLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLElBQUksRUFBRSxTQUFTO1FBQ2YsSUFBSSxFQUFFLGdDQUFnQztLQUN2QyxDQUFDO1NB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