cdk-multi-profile-plugin
Version:
Adds multi profile/account, mfa and aws sso support to cdk apps
68 lines • 6.5 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProfileConfig = void 0;
const fs = __importStar(require("fs-extra"));
const ini = __importStar(require("ini"));
class ProfileConfig {
constructor(path) {
try {
const raw = fs.readFileSync(path, {
encoding: 'utf-8',
});
this.config = ini.parse(raw);
}
catch (e) {
this.config = {};
}
}
getProfile(profile) {
return this.config[`profile ${profile}`];
}
getSSOSession(ssoSession) {
return this.config[`sso-session ${ssoSession}`];
}
getSSOSettings(profile) {
var _a, _b;
if (!this.isSSOProfile(profile))
return {};
const config = this.getProfile(profile);
let ssoConfig = {};
if (config === null || config === void 0 ? void 0 : config.sso_session) {
ssoConfig = this.getSSOSession(config.sso_session);
}
const ssoSettings = {
sso_start_url: (_a = config === null || config === void 0 ? void 0 : config.sso_start_url) !== null && _a !== void 0 ? _a : ssoConfig === null || ssoConfig === void 0 ? void 0 : ssoConfig.sso_start_url,
sso_region: (_b = config === null || config === void 0 ? void 0 : config.sso_region) !== null && _b !== void 0 ? _b : ssoConfig === null || ssoConfig === void 0 ? void 0 : ssoConfig.sso_region,
};
return ssoSettings;
}
isSSOProfile(profile) {
const config = this.getProfile(profile);
return Boolean((config === null || config === void 0 ? void 0 : config.sso_start_url) || (config === null || config === void 0 ? void 0 : config.sso_session));
}
}
exports.ProfileConfig = ProfileConfig;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvZmlsZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBK0I7QUFDL0IseUNBQTJCO0FBRTNCLE1BQWEsYUFBYTtJQUd4QixZQUFZLElBQVk7UUFDdEIsSUFBSTtZQUNGLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO2dCQUNoQyxRQUFRLEVBQUUsT0FBTzthQUNsQixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDOUI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUFlO1FBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLGFBQWEsQ0FBQyxVQUFrQjtRQUNyQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxjQUFjLENBQUMsT0FBZTs7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxJQUFJLFNBQVMsR0FBMkIsRUFBRSxDQUFDO1FBQzNDLElBQUksTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFdBQVcsRUFBRTtZQUN2QixTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDcEQ7UUFDRCxNQUFNLFdBQVcsR0FBRztZQUNsQixhQUFhLEVBQUUsTUFBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsYUFBYSxtQ0FBSSxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUUsYUFBYTtZQUNoRSxVQUFVLEVBQUUsTUFBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsVUFBVSxtQ0FBSSxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUUsVUFBVTtTQUN4RCxDQUFDO1FBQ0YsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVNLFlBQVksQ0FBQyxPQUFlO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFeEMsT0FBTyxPQUFPLENBQUMsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsYUFBYSxNQUFJLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxXQUFXLENBQUEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRjtBQTNDRCxzQ0EyQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgKiBhcyBpbmkgZnJvbSAnaW5pJztcblxuZXhwb3J0IGNsYXNzIFByb2ZpbGVDb25maWcge1xuICBwcml2YXRlIGNvbmZpZzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG5cbiAgY29uc3RydWN0b3IocGF0aDogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhdyA9IGZzLnJlYWRGaWxlU3luYyhwYXRoLCB7XG4gICAgICAgIGVuY29kaW5nOiAndXRmLTgnLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY29uZmlnID0gaW5pLnBhcnNlKHJhdyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5jb25maWcgPSB7fTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJvZmlsZShwcm9maWxlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdbYHByb2ZpbGUgJHtwcm9maWxlfWBdO1xuICB9XG5cbiAgcHVibGljIGdldFNTT1Nlc3Npb24oc3NvU2Vzc2lvbjogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnW2Bzc28tc2Vzc2lvbiAke3Nzb1Nlc3Npb259YF07XG4gIH1cblxuICBwdWJsaWMgZ2V0U1NPU2V0dGluZ3MocHJvZmlsZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgaWYgKCF0aGlzLmlzU1NPUHJvZmlsZShwcm9maWxlKSkgcmV0dXJuIHt9O1xuXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5nZXRQcm9maWxlKHByb2ZpbGUpO1xuICAgIGxldCBzc29Db25maWc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBpZiAoY29uZmlnPy5zc29fc2Vzc2lvbikge1xuICAgICAgc3NvQ29uZmlnID0gdGhpcy5nZXRTU09TZXNzaW9uKGNvbmZpZy5zc29fc2Vzc2lvbik7XG4gICAgfVxuICAgIGNvbnN0IHNzb1NldHRpbmdzID0ge1xuICAgICAgc3NvX3N0YXJ0X3VybDogY29uZmlnPy5zc29fc3RhcnRfdXJsID8/IHNzb0NvbmZpZz8uc3NvX3N0YXJ0X3VybCxcbiAgICAgIHNzb19yZWdpb246IGNvbmZpZz8uc3NvX3JlZ2lvbiA/PyBzc29Db25maWc/LnNzb19yZWdpb24sXG4gICAgfTtcbiAgICByZXR1cm4gc3NvU2V0dGluZ3M7XG4gIH1cblxuICBwdWJsaWMgaXNTU09Qcm9maWxlKHByb2ZpbGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0UHJvZmlsZShwcm9maWxlKTtcblxuICAgIHJldHVybiBCb29sZWFuKGNvbmZpZz8uc3NvX3N0YXJ0X3VybCB8fCBjb25maWc/LnNzb19zZXNzaW9uKTtcbiAgfVxufVxuIl19