UNPKG

aws-cdk

Version:

AWS CDK CLI, the command line tool for CDK apps

79 lines 10.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sanitizeCommandLineArguments = sanitizeCommandLineArguments; exports.sanitizeContext = sanitizeContext; const feature_flags_1 = require("./feature-flags"); /** * argv is the output of yargs */ function sanitizeCommandLineArguments(argv) { // Get the configuration of the arguments // eslint-disable-next-line @typescript-eslint/no-require-imports const config = require('../cli-type-registry.json'); const command = argv._[0]; const path = [command]; const parameters = {}; const globalOptions = Object.keys(config.globalOptions); const commandOptions = Object.keys(config.commands[command]?.options ?? {}); const commandArg = config.commands[command]?.arg; for (const argName of Object.keys(argv)) { if (argName === commandArg?.name) { if (commandArg.variadic) { for (let i = 0; i < argv[argName].length; i++) { path.push(`$${argName}_${i + 1}`); } } else { path.push(`$${argName}`); } } // Continue if the arg name is not a global option or command option // arg name comes from yargs and could be an alias; we trust that the "normal" // name has the same information and that is what we want to record if (argv[argName] === undefined || (!globalOptions.includes(argName) && !commandOptions.includes(argName))) { continue; } if (isNumberOrBoolean(argv[argName]) || isKnownEnumValue(argName, argv[argName], command, config)) { parameters[argName] = argv[argName]; } else { parameters[argName] = '<redacted>'; } } return { path, parameters, }; } function sanitizeContext(context) { const sanitizedContext = {}; for (const [flag, value] of Object.entries(context.all)) { // Skip if flag is not in the FeatureFlags enum if (!isFeatureFlag(flag)) { continue; } // Falsy options include boolean false, string 'false' // All other inputs evaluate to true const sanitizedValue = isBoolean(value) ? value : (value !== 'false'); sanitizedContext[flag] = sanitizedValue; } return sanitizedContext; } function isBoolean(value) { return typeof value === 'boolean'; } function isNumberOrBoolean(value) { return typeof value === 'number' || isBoolean(value); } function isKnownEnumValue(name, value, command, config) { const propertyDefiniton = config.globalOptions[name] ?? config.commands[command]?.options[name]; if (propertyDefiniton.type === 'string') { // Even if the property has choices, only record if the value is a valid choice return propertyDefiniton.choices?.includes(value); } return false; } function isFeatureFlag(flag) { return Object.values(feature_flags_1.FeatureFlag).includes(flag); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuaXRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNhbml0YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSxvRUF5Q0M7QUFFRCwwQ0FjQztBQS9ERCxtREFBOEM7QUFHOUM7O0dBRUc7QUFDSCxTQUFnQiw0QkFBNEIsQ0FBQyxJQUFTO0lBQ3BELHlDQUF5QztJQUV6QyxpRUFBaUU7SUFDakUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDcEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixNQUFNLElBQUksR0FBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sVUFBVSxHQUE4QixFQUFFLENBQUM7SUFFakQsTUFBTSxhQUFhLEdBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0QsTUFBTSxjQUFjLEdBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRixNQUFNLFVBQVUsR0FBbUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLENBQUM7SUFFakcsS0FBSyxNQUFNLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEMsSUFBSSxPQUFPLEtBQUssVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2pDLElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUks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bmltcG9ydCB0eXBlIHsgQ29udGV4dCB9IGZyb20gJy4uLy4uL2FwaS9jb250ZXh0JztcblxuLyoqXG4gKiBhcmd2IGlzIHRoZSBvdXRwdXQgb2YgeWFyZ3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplQ29tbWFuZExpbmVBcmd1bWVudHMoYXJndjogYW55KTogeyBwYXRoOiBzdHJpbmdbXTsgcGFyYW1ldGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB9IHtcbiAgLy8gR2V0IHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBhcmd1bWVudHNcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBjb25maWcgPSByZXF1aXJlKCcuLi9jbGktdHlwZS1yZWdpc3RyeS5qc29uJyk7XG4gIGNvbnN0IGNvbW1hbmQgPSBhcmd2Ll9bMF07XG4gIGNvbnN0IHBhdGg6IHN0cmluZ1tdID0gW2NvbW1hbmRdO1xuICBjb25zdCBwYXJhbWV0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgY29uc3QgZ2xvYmFsT3B0aW9uczogYW55W10gPSBPYmplY3Qua2V5cyhjb25maWcuZ2xvYmFsT3B0aW9ucyk7XG4gIGNvbnN0IGNvbW1hbmRPcHRpb25zOiBhbnlbXSA9IE9iamVjdC5rZXlzKGNvbmZpZy5jb21tYW5kc1tjb21tYW5kXT8ub3B0aW9ucyA/PyB7fSk7XG4gIGNvbnN0IGNvbW1hbmRBcmc6IHsgbmFtZTogc3RyaW5nOyB2YXJpYWRpYzogc3RyaW5nIH0gfCB1bmRlZmluZWQgPSBjb25maWcuY29tbWFuZHNbY29tbWFuZF0/LmFyZztcblxuICBmb3IgKGNvbnN0IGFyZ05hbWUgb2YgT2JqZWN0LmtleXMoYXJndikpIHtcbiAgICBpZiAoYXJnTmFtZSA9PT0gY29tbWFuZEFyZz8ubmFtZSkge1xuICAgICAgaWYgKGNvbW1hbmRBcmcudmFyaWFkaWMpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd2W2FyZ05hbWVdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgcGF0aC5wdXNoKGAkJHthcmdOYW1lfV8ke2krMX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF0aC5wdXNoKGAkJHthcmdOYW1lfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbnRpbnVlIGlmIHRoZSBhcmcgbmFtZSBpcyBub3QgYSBnbG9iYWwgb3B0aW9uIG9yIGNvbW1hbmQgb3B0aW9uXG4gICAgLy8gYXJnIG5hbWUgY29tZXMgZnJvbSB5YXJncyBhbmQgY291bGQgYmUgYW4gYWxpYXM7IHdlIHRydXN0IHRoYXQgdGhlIFwibm9ybWFsXCJcbiAgICAvLyBuYW1lIGhhcyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBhbmQgdGhhdCBpcyB3aGF0IHdlIHdhbnQgdG8gcmVjb3JkXG4gICAgaWYgKGFyZ3ZbYXJnTmFtZV0gPT09IHVuZGVmaW5lZCB8fCAoIWdsb2JhbE9wdGlvbnMuaW5jbHVkZXMoYXJnTmFtZSkgJiYgIWNvbW1hbmRPcHRpb25zLmluY2x1ZGVzKGFyZ05hbWUpKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChpc051bWJlck9yQm9vbGVhbihhcmd2W2FyZ05hbWVdKSB8fCBpc0tub3duRW51bVZhbHVlKGFyZ05hbWUsIGFyZ3ZbYXJnTmFtZV0sIGNvbW1hbmQsIGNvbmZpZykpIHtcbiAgICAgIHBhcmFtZXRlcnNbYXJnTmFtZV0gPSBhcmd2W2FyZ05hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbWV0ZXJzW2FyZ05hbWVdID0gJzxyZWRhY3RlZD4nO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGF0aCxcbiAgICBwYXJhbWV0ZXJzLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVDb250ZXh0KGNvbnRleHQ6IENvbnRleHQpIHtcbiAgY29uc3Qgc2FuaXRpemVkQ29udGV4dDogeyBbSyBpbiBGZWF0dXJlRmxhZ106IGJvb2xlYW4gfSA9IHt9IGFzIHsgW0sgaW4gRmVhdHVyZUZsYWddOiBib29sZWFuIH07XG4gIGZvciAoY29uc3QgW2ZsYWcsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjb250ZXh0LmFsbCkpIHtcbiAgICAvLyBTa2lwIGlmIGZsYWcgaXMgbm90IGluIHRoZSBGZWF0dXJlRmxhZ3MgZW51bVxuICAgIGlmICghaXNGZWF0dXJlRmxhZyhmbGFnKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gRmFsc3kgb3B0aW9ucyBpbmNsdWRlIGJvb2xlYW4gZmFsc2UsIHN0cmluZyAnZmFsc2UnXG4gICAgLy8gQWxsIG90aGVyIGlucHV0cyBldmFsdWF0ZSB0byB0cnVlXG4gICAgY29uc3Qgc2FuaXRpemVkVmFsdWU6IGJvb2xlYW4gPSBpc0Jvb2xlYW4odmFsdWUpID8gdmFsdWUgOiAodmFsdWUgIT09ICdmYWxzZScpO1xuICAgIHNhbml0aXplZENvbnRleHRbZmxhZ10gPSBzYW5pdGl6ZWRWYWx1ZTtcbiAgfVxuICByZXR1cm4gc2FuaXRpemVkQ29udGV4dDtcbn1cblxuZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nO1xufVxuXG5mdW5jdGlvbiBpc051bWJlck9yQm9vbGVhbih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8IGlzQm9vbGVhbih2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGlzS25vd25FbnVtVmFsdWUobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBjb21tYW5kOiBzdHJpbmcsIGNvbmZpZzogYW55KTogYm9vbGVhbiB7XG4gIGNvbnN0IHByb3BlcnR5RGVmaW5pdG9uID0gY29uZmlnLmdsb2JhbE9wdGlvbnNbbmFtZV0gPz8gY29uZmlnLmNvbW1hbmRzW2NvbW1hbmRdPy5vcHRpb25zW25hbWVdO1xuICBpZiAocHJvcGVydHlEZWZpbml0b24udHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBFdmVuIGlmIHRoZSBwcm9wZXJ0eSBoYXMgY2hvaWNlcywgb25seSByZWNvcmQgaWYgdGhlIHZhbHVlIGlzIGEgdmFsaWQgY2hvaWNlXG4gICAgcmV0dXJuIHByb3BlcnR5RGVmaW5pdG9uLmNob2ljZXM/LmluY2x1ZGVzKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGlzRmVhdHVyZUZsYWcoZmxhZzogc3RyaW5nKTogZmxhZyBpcyBGZWF0dXJlRmxhZyB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKEZlYXR1cmVGbGFnKS5pbmNsdWRlcyhmbGFnIGFzIEZlYXR1cmVGbGFnKTtcbn1cbiJdfQ==