66 lines
8.6 KiB
JavaScript
66 lines
8.6 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.looksLikeGlob = looksLikeGlob;
|
|
exports.globEnvironmentsFromStacks = globEnvironmentsFromStacks;
|
|
exports.environmentsFromDescriptors = environmentsFromDescriptors;
|
|
const toolkit_lib_1 = require("@aws-cdk/toolkit-lib");
|
|
const picomatch_1 = require("picomatch");
|
|
function looksLikeGlob(environment) {
|
|
return environment.indexOf('*') > -1;
|
|
}
|
|
// eslint-disable-next-line @stylistic/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, picomatch_1.isMatch)(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 toolkit_lib_1.ToolkitError('NoEnvironmentsFound', `No environments were found when selecting across ${globs} (available: ${envList})`);
|
|
}
|
|
return environments;
|
|
}
|
|
/**
|
|
* 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 toolkit_lib_1.ToolkitError('InvalidEnvironmentFormat', `Expected environment name in format 'aws://<account>/<region>', got: ${spec}`);
|
|
}
|
|
ret.push({
|
|
name: spec,
|
|
account: parts[0],
|
|
region: parts[1],
|
|
});
|
|
}
|
|
return ret;
|
|
}
|
|
/**
|
|
* 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZW52aXJvbm1lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esc0NBRUM7QUFHRCxnRUFtQkM7QUFLRCxrRUFpQkM7QUFsREQsc0RBQW9EO0FBQ3BELHlDQUFpRDtBQUdqRCxTQUFnQixhQUFhLENBQUMsV0FBbUI7SUFDL0MsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCw4Q0FBOEM7QUFDdkMsS0FBSyxVQUFVLDBCQUEwQixDQUFDLE1BQXVCLEVBQUUsZ0JBQTBCLEVBQUUsR0FBZ0I7SUFDcEgsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEtBQUssRUFBcUIsQ0FBQztJQUM3RCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0QscUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFBLG1CQUFTLEVBQUMsR0FBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUgsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvQyxNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDckgsTUFBTSxJQUFJLDBCQUFZLENBQUMscUJBQXFCLEVBQUUsb0RBQW9ELEtBQUssZ0JBQWdCLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDckksQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDJCQUEyQixDQUFDLFFBQWtCO0lBQzVELE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFxQixDQUFDO0lBRTNDLEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7UUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksMEJBQVksQ0FBQywwQkFBMEIsRUFBRSx3RUFBd0UsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNySSxDQUFDO1FBRUQsR0FBRyxDQUFDLElBQUksQ0FBQztZQUNQLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLFFBQVEsQ0FBQyxJQUF5QjtJQUN6QyxNQUFNLE1BQU0sR0FBd0MsRUFBRSxDQUFDO0lBQ3ZELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxJQUFJLFNBQVMsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ3BFLElBQUksRUFBRSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLFNBQVM7UUFDWCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaSc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICdAYXdzLWNkay90b29sa2l0LWxpYic7XG5pbXBvcnQgeyBpc01hdGNoIGFzIHBpY29tYXRjaCB9IGZyb20gJ3BpY29tYXRjaCc7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyLCBTdGFja0NvbGxlY3Rpb24gfSBmcm9tICcuLi9hcGknO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9va3NMaWtlR2xvYihlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gIHJldHVybiBlbnZpcm9ubWVudC5pbmRleE9mKCcqJykgPiAtMTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBzdHlsaXN0aWMvbWF4LWxlblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdsb2JFbnZpcm9ubWVudHNGcm9tU3RhY2tzKHN0YWNrczogU3RhY2tDb2xsZWN0aW9uLCBlbnZpcm9ubWVudEdsb2JzOiBzdHJpbmdbXSwgc2RrOiBTZGtQcm92aWRlcik6IFByb21pc2U8Y3hhcGkuRW52aXJvbm1lbnRbXT4ge1xuICBpZiAoZW52aXJvbm1lbnRHbG9icy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBhdmFpbGFibGVFbnZpcm9ubWVudHMgPSBuZXcgQXJyYXk8Y3hhcGkuRW52aXJvbm1lbnQ+KCk7XG4gIGZvciAoY29uc3Qgc3RhY2sgb2Ygc3RhY2tzLnN0YWNrQXJ0aWZhY3RzKSB7XG4gICAgY29uc3QgYWN0dWFsID0gYXdhaXQgc2RrLnJlc29sdmVFbnZpcm9ubWVudChzdGFjay5lbnZpcm9ubWVudCk7XG4gICAgYXZhaWxhYmxlRW52aXJvbm1lbnRzLnB1c2goYWN0dWFsKTtcbiAgfVxuXG4gIGNvbnN0IGVudmlyb25tZW50cyA9IGRpc3RpbmN0KGF2YWlsYWJsZUVudmlyb25tZW50cykuZmlsdGVyKGVudiA9PiBlbnZpcm9ubWVudEdsb2JzLmZpbmQoZ2xvYiA9PiBwaWNvbWF0Y2goZW52IS5uYW1lLCBnbG9iKSkpO1xuICBpZiAoZW52aXJvbm1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnN0IGdsb2JzID0gSlNPTi5zdHJpbmdpZnkoZW52aXJvbm1lbnRHbG9icyk7XG4gICAgY29uc3QgZW52TGlzdCA9IGF2YWlsYWJsZUVudmlyb25tZW50cy5sZW5ndGggPiAwID8gYXZhaWxhYmxlRW52aXJvbm1lbnRzLm1hcChlbnYgPT4gZW52IS5uYW1lKS5qb2luKCcsICcpIDogJzxub25lPic7XG4gICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignTm9FbnZpcm9ubWVudHNGb3VuZCcsIGBObyBlbnZpcm9ubWVudHMgd2VyZSBmb3VuZCB3aGVuIHNlbGVjdGluZyBhY3Jvc3MgJHtnbG9ic30gKGF2YWlsYWJsZTogJHtlbnZMaXN0fSlgKTtcbiAgfVxuXG4gIHJldHVybiBlbnZpcm9ubWVudHM7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBzZXQgb2YgXCI8YWNjb3VudD4vPHJlZ2lvbj5cIiBzdHJpbmdzLCBjb25zdHJ1Y3QgZW52aXJvbm1lbnRzIGZvciB0aGVtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnZpcm9ubWVudHNGcm9tRGVzY3JpcHRvcnMoZW52U3BlY3M6IHN0cmluZ1tdKTogY3hhcGkuRW52aXJvbm1lbnRbXSB7XG4gIGNvbnN0IHJldCA9IG5ldyBBcnJheTxjeGFwaS5FbnZpcm9ubWVudD4oKTtcblxuICBmb3IgKGNvbnN0IHNwZWMgb2YgZW52U3BlY3MpIHtcbiAgICBjb25zdCBwYXJ0cyA9IHNwZWMucmVwbGFjZSgvXmF3czpcXC9cXC8vLCAnJykuc3BsaXQoJy8nKTtcbiAgICBpZiAocGFydHMubGVuZ3RoICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdJbnZhbGlkRW52aXJvbm1lbnRGb3JtYXQnLCBgRXhwZWN0ZWQgZW52aXJvbm1lbnQgbmFtZSBpbiBmb3JtYXQgJ2F3czovLzxhY2NvdW50Pi88cmVnaW9uPicsIGdvdDogJHtzcGVjfWApO1xuICAgIH1cblxuICAgIHJldC5wdXNoKHtcbiAgICAgIG5hbWU6IHNwZWMsXG4gICAgICBhY2NvdW50OiBwYXJ0c1swXSxcbiAgICAgIHJlZ2lvbjogcGFydHNbMV0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIERlLWR1cGxpY2F0ZXMgYSBsaXN0IG9mIGVudmlyb25tZW50cywgc3VjaCB0aGF0IGEgZ2l2ZW4gYWNjb3VudCBhbmQgcmVnaW9uIGlzIG9ubHkgcmVwcmVzZW50ZWQgZXhhY3RseSBvbmNlXG4gKiBpbiB0aGUgcmVzdWx0LlxuICpcbiAqIEBwYXJhbSBlbnZzIC0gdGhlIHBvc3NpYmx5IGZ1bGwtb2YtZHVwbGljYXRlcyBsaXN0IG9mIGVudmlyb25tZW50cy5cbiAqXG4gKiBAcmV0dXJuIGEgZGUtZHVwbGljYXRlZCBsaXN0IG9mIGVudmlyb25tZW50cy5cbiAqL1xuZnVuY3Rpb24gZGlzdGluY3QoZW52czogY3hhcGkuRW52aXJvbm1lbnRbXSk6IGN4YXBpLkVudmlyb25tZW50W10ge1xuICBjb25zdCB1bmlxdWU6IHsgW2lkOiBzdHJpbmddOiBjeGFwaS5FbnZpcm9ubWVudCB9ID0ge307XG4gIGZvciAoY29uc3QgZW52IG9mIGVudnMpIHtcbiAgICBjb25zdCBpZCA9IGAke2Vudi5hY2NvdW50IHx8ICdkZWZhdWx0J30vJHtlbnYucmVnaW9uIHx8ICdkZWZhdWx0J31gO1xuICAgIGlmIChpZCBpbiB1bmlxdWUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB1bmlxdWVbaWRdID0gZW52O1xuICB9XG4gIHJldHVybiBPYmplY3QudmFsdWVzKHVuaXF1ZSk7XG59XG4iXX0=
|