UNPKG

aws-cdk

Version:

CDK Toolkit, the command line tool for CDK apps

66 lines 8.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.environmentsFromDescriptors = exports.globEnvironmentsFromStacks = exports.looksLikeGlob = void 0; const minimatch_1 = require("minimatch"); function looksLikeGlob(environment) { return environment.indexOf('*') > -1; } exports.looksLikeGlob = looksLikeGlob; // eslint-disable-next-line max-len async function globEnvironmentsFromStacks(stacks, environmentGlobs, sdk) { if (environmentGlobs.length === 0) { return []; } const availableEnvironments = new Array(); for (const stack of stacks.stackArtifacts) { const actual = await sdk.resolveEnvironment(stack.environment); availableEnvironments.push(actual); } const environments = distinct(availableEnvironments).filter(env => environmentGlobs.find(glob => (0, minimatch_1.minimatch)(env.name, glob))); if (environments.length === 0) { const globs = JSON.stringify(environmentGlobs); const envList = availableEnvironments.length > 0 ? availableEnvironments.map(env => env.name).join(', ') : '<none>'; throw new Error(`No environments were found when selecting across ${globs} (available: ${envList})`); } return environments; } exports.globEnvironmentsFromStacks = globEnvironmentsFromStacks; /** * Given a set of "<account>/<region>" strings, construct environments for them */ function environmentsFromDescriptors(envSpecs) { const ret = new Array(); for (const spec of envSpecs) { const parts = spec.replace(/^aws:\/\//, '').split('/'); if (parts.length !== 2) { throw new Error(`Expected environment name in format 'aws://<account>/<region>', got: ${spec}`); } ret.push({ name: spec, account: parts[0], region: parts[1], }); } return ret; } exports.environmentsFromDescriptors = environmentsFromDescriptors; /** * De-duplicates a list of environments, such that a given account and region is only represented exactly once * in the result. * * @param envs the possibly full-of-duplicates list of environments. * * @return a de-duplicated list of environments. */ function distinct(envs) { const unique = {}; for (const env of envs) { const id = `${env.account || 'default'}/${env.region || 'default'}`; if (id in unique) { continue; } unique[id] = env; } return Object.values(unique); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZW52aXJvbm1lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHlDQUFzQztBQUl0QyxTQUFnQixhQUFhLENBQUMsV0FBbUI7SUFDL0MsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFGRCxzQ0FFQztBQUVELG1DQUFtQztBQUM1QixLQUFLLFVBQVUsMEJBQTBCLENBQUMsTUFBdUIsRUFBRSxnQkFBMEIsRUFBRSxHQUFnQjtJQUNwSCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFBRSxPQUFPLEVBQUUsQ0FBQztLQUFFO0lBRWpELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxLQUFLLEVBQXFCLENBQUM7SUFDN0QsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFO1FBQ3pDLE1BQU0sTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvRCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDcEM7SUFFRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFBLHFCQUFTLEVBQUMsR0FBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUgsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcscUJBQXFCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3JILE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELEtBQUssZ0JBQWdCLE9BQU8sR0FBRyxDQUFDLENBQUM7S0FDdEc7SUFFRCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBakJELGdFQWlCQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsUUFBa0I7SUFDNUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQXFCLENBQUM7SUFFM0MsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUU7UUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RUFBd0UsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUNqRztRQUVELEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDUCxJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2pCLENBQUMsQ0FBQztLQUNKO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBakJELGtFQWlCQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLFFBQVEsQ0FBQyxJQUF5QjtJQUN6QyxNQUFNLE1BQU0sR0FBd0MsRUFBRSxDQUFDO0lBQ3ZELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1FBQ3RCLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sSUFBSSxTQUFTLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNwRSxJQUFJLEVBQUUsSUFBSSxNQUFNLEVBQUU7WUFBRSxTQUFTO1NBQUU7UUFDL0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNsQjtJQUNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB7IG1pbmltYXRjaCB9IGZyb20gJ21pbmltYXRjaCc7XG5pbXBvcnQgeyBTdGFja0NvbGxlY3Rpb24gfSBmcm9tICcuL2Nsb3VkLWFzc2VtYmx5JztcbmltcG9ydCB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vYXdzLWF1dGgnO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9va3NMaWtlR2xvYihlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gIHJldHVybiBlbnZpcm9ubWVudC5pbmRleE9mKCcqJykgPiAtMTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnbG9iRW52aXJvbm1lbnRzRnJvbVN0YWNrcyhzdGFja3M6IFN0YWNrQ29sbGVjdGlvbiwgZW52aXJvbm1lbnRHbG9iczogc3RyaW5nW10sIHNkazogU2RrUHJvdmlkZXIpOiBQcm9taXNlPGN4YXBpLkVudmlyb25tZW50W10+IHtcbiAgaWYgKGVudmlyb25tZW50R2xvYnMubGVuZ3RoID09PSAwKSB7IHJldHVybiBbXTsgfVxuXG4gIGNvbnN0IGF2YWlsYWJsZUVudmlyb25tZW50cyA9IG5ldyBBcnJheTxjeGFwaS5FbnZpcm9ubWVudD4oKTtcbiAgZm9yIChjb25zdCBzdGFjayBvZiBzdGFja3Muc3RhY2tBcnRpZmFjdHMpIHtcbiAgICBjb25zdCBhY3R1YWwgPSBhd2FpdCBzZGsucmVzb2x2ZUVudmlyb25tZW50KHN0YWNrLmVudmlyb25tZW50KTtcbiAgICBhdmFpbGFibGVFbnZpcm9ubWVudHMucHVzaChhY3R1YWwpO1xuICB9XG5cbiAgY29uc3QgZW52aXJvbm1lbnRzID0gZGlzdGluY3QoYXZhaWxhYmxlRW52aXJvbm1lbnRzKS5maWx0ZXIoZW52ID0+IGVudmlyb25tZW50R2xvYnMuZmluZChnbG9iID0+IG1pbmltYXRjaChlbnYhLm5hbWUsIGdsb2IpKSk7XG4gIGlmIChlbnZpcm9ubWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgY29uc3QgZ2xvYnMgPSBKU09OLnN0cmluZ2lmeShlbnZpcm9ubWVudEdsb2JzKTtcbiAgICBjb25zdCBlbnZMaXN0ID0gYXZhaWxhYmxlRW52aXJvbm1lbnRzLmxlbmd0aCA+IDAgPyBhdmFpbGFibGVFbnZpcm9ubWVudHMubWFwKGVudiA9PiBlbnYhLm5hbWUpLmpvaW4oJywgJykgOiAnPG5vbmU+JztcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGVudmlyb25tZW50cyB3ZXJlIGZvdW5kIHdoZW4gc2VsZWN0aW5nIGFjcm9zcyAke2dsb2JzfSAoYXZhaWxhYmxlOiAke2Vudkxpc3R9KWApO1xuICB9XG5cbiAgcmV0dXJuIGVudmlyb25tZW50cztcbn1cblxuLyoqXG4gKiBHaXZlbiBhIHNldCBvZiBcIjxhY2NvdW50Pi88cmVnaW9uPlwiIHN0cmluZ3MsIGNvbnN0cnVjdCBlbnZpcm9ubWVudHMgZm9yIHRoZW1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVudmlyb25tZW50c0Zyb21EZXNjcmlwdG9ycyhlbnZTcGVjczogc3RyaW5nW10pOiBjeGFwaS5FbnZpcm9ubWVudFtdIHtcbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PGN4YXBpLkVudmlyb25tZW50PigpO1xuXG4gIGZvciAoY29uc3Qgc3BlYyBvZiBlbnZTcGVjcykge1xuICAgIGNvbnN0IHBhcnRzID0gc3BlYy5yZXBsYWNlKC9eYXdzOlxcL1xcLy8sICcnKS5zcGxpdCgnLycpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgZW52aXJvbm1lbnQgbmFtZSBpbiBmb3JtYXQgJ2F3czovLzxhY2NvdW50Pi88cmVnaW9uPicsIGdvdDogJHtzcGVjfWApO1xuICAgIH1cblxuICAgIHJldC5wdXNoKHtcbiAgICAgIG5hbWU6IHNwZWMsXG4gICAgICBhY2NvdW50OiBwYXJ0c1swXSxcbiAgICAgIHJlZ2lvbjogcGFydHNbMV0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIERlLWR1cGxpY2F0ZXMgYSBsaXN0IG9mIGVudmlyb25tZW50cywgc3VjaCB0aGF0IGEgZ2l2ZW4gYWNjb3VudCBhbmQgcmVnaW9uIGlzIG9ubHkgcmVwcmVzZW50ZWQgZXhhY3RseSBvbmNlXG4gKiBpbiB0aGUgcmVzdWx0LlxuICpcbiAqIEBwYXJhbSBlbnZzIHRoZSBwb3NzaWJseSBmdWxsLW9mLWR1cGxpY2F0ZXMgbGlzdCBvZiBlbnZpcm9ubWVudHMuXG4gKlxuICogQHJldHVybiBhIGRlLWR1cGxpY2F0ZWQgbGlzdCBvZiBlbnZpcm9ubWVudHMuXG4gKi9cbmZ1bmN0aW9uIGRpc3RpbmN0KGVudnM6IGN4YXBpLkVudmlyb25tZW50W10pOiBjeGFwaS5FbnZpcm9ubWVudFtdIHtcbiAgY29uc3QgdW5pcXVlOiB7IFtpZDogc3RyaW5nXTogY3hhcGkuRW52aXJvbm1lbnQgfSA9IHt9O1xuICBmb3IgKGNvbnN0IGVudiBvZiBlbnZzKSB7XG4gICAgY29uc3QgaWQgPSBgJHtlbnYuYWNjb3VudCB8fCAnZGVmYXVsdCd9LyR7ZW52LnJlZ2lvbiB8fCAnZGVmYXVsdCd9YDtcbiAgICBpZiAoaWQgaW4gdW5pcXVlKSB7IGNvbnRpbnVlOyB9XG4gICAgdW5pcXVlW2lkXSA9IGVudjtcbiAgfVxuICByZXR1cm4gT2JqZWN0LnZhbHVlcyh1bmlxdWUpO1xufVxuIl19