-
Notifications
You must be signed in to change notification settings - Fork 4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore(cli): refactor cli.ts to use CliArguments
#32760
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The pull request linter has failed. See the aws-cdk-automation comment below for failure reasons. If you believe this pull request should receive an exemption, please comment and provide a justification.
A comment requesting an exemption should contain the text Exemption Request
. Additionally, if clarification is needed add Clarification Request
to a comment.
The pull request linter fails with the following errors:
PRs must pass status checks before we can provide a meaningful review. If you would like to request an exemption from the status checks or clarification on feedback, please leave a comment on this PR containing ✅ A exemption request has been requested. Please wait for a maintainer's review. |
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
|
||
/** | ||
* The type of the assets to be garbage collected. | ||
* | ||
* @default 'all' | ||
*/ | ||
readonly type: 's3' | 'ecr' | 'all'; | ||
readonly type: TypeType; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
readonly type: TypeType; | |
readonly type: AssetType; |
@@ -1792,14 +1795,14 @@ export interface GarbageCollectionOptions { | |||
* | |||
* @default 'full' | |||
*/ | |||
readonly action: 'print' | 'tag' | 'delete-tagged' | 'full'; | |||
readonly action: ActionType; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
readonly action: ActionType; | |
readonly action: GarbageCollectionAction; |
} else { // Skip bundling for all stacks | ||
bundlingStacks = []; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The else is unnecessary if you assign bundlingStacks
to the empty array earlier: let bundlingStacks = new Array<string>();
context[cxapi.BUNDLING_STACKS] = bundlingStacks; | ||
|
||
debug('context:', context); | ||
|
||
return context; | ||
} | ||
|
||
function setBundlingStacks(config: Configuration) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This works but is hard to parse for a human. In general I prefer this style:
// explain how this is even possible
if (!config.command) {
return [];
}
const stackCommands = [...];
// command doesn't operate on a stack selection
if (!stackCommands.includes(config.command) {
return [];
}
// If we deploy, diff, synth or watch a list of stacks exclusively we skip
// bundling for all other stacks.
if (config.settings.get(['exclusively']) && config.settings.get(['STACKS'])) {
return config.settings.get(['STACKS']);
}
return ['**'];
const configuration = new Configuration({ | ||
commandLineArguments: argv, | ||
}); | ||
await configuration.load(); | ||
const settings = configuration.settings.all; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Side note: With that we still have the weird duplicity of having Configuration
and Settings
const diffOptions = settings.diff ?? {}; | ||
return cli.diff({ | ||
stackNames: args.STACKS, | ||
exclusively: args.exclusively, | ||
templatePath: args.template, | ||
strict: args.strict, | ||
contextLines: args.contextLines, | ||
securityOnly: args.securityOnly, | ||
fail: args.fail != null ? args.fail : !enableDiffNoFail, | ||
stream: args.ci ? process.stdout : undefined, | ||
compareAgainstProcessedTemplate: args.processed, | ||
quiet: args.quiet, | ||
changeSet: args['change-set'], | ||
stackNames: diffOptions.STACKS ?? [], | ||
exclusively: diffOptions.exclusively, | ||
templatePath: diffOptions.template, | ||
strict: diffOptions.strict, | ||
contextLines: diffOptions.contextLines, | ||
securityOnly: diffOptions.securityOnly, | ||
fail: diffOptions.fail != null ? diffOptions.fail : !enableDiffNoFail, | ||
stream: globalOptions.ci ? process.stdout : undefined, | ||
compareAgainstProcessedTemplate: diffOptions.processed, | ||
quiet: diffOptions.quiet, | ||
changeSet: diffOptions.changeSet, | ||
toolkitStackName: toolkitStackName, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is good already, but ideally the next step would be a strongly typed helper function/method so we can do:
return cli.diff(diffSettingsToDiffOptions(settings.diff));
The pull request linter fails with the following errors:
PRs must pass status checks before we can provide a meaningful review. If you would like to request an exemption from the status checks or clarification on feedback, please leave a comment on this PR containing ✅ A exemption request has been requested. Please wait for a maintainer's review. |
To be written
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license