@cdklabs/cdk-ecs-codedeploy
Version:
CDK Constructs for performing ECS Deployments with CodeDeploy
42 lines • 5.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CanaryCodeBundler = void 0;
const child_process_1 = require("child_process");
const fs = require("fs");
const path = require("path");
const PACKAGE_JSON_PATTERN = /^package\.json$/;
const SOURCE_JS_PATTERN = /^.+\.js$/;
class CanaryCodeBundler {
constructor(codePath) {
this.codePath = codePath;
const codePathStats = fs.lstatSync(this.codePath);
if (!codePathStats.isDirectory) {
throw new Error(`Invalid codePath: ${this.codePath}`);
}
}
copy(pattern, outputDir) {
const outputDirStats = fs.lstatSync(outputDir);
if (!outputDirStats.isDirectory) {
throw new Error(`Invalid outputDir: ${outputDir}`);
}
fs.readdirSync(this.codePath)
.filter(f => f.match(pattern))
.forEach(f => {
fs.copyFileSync(`${this.codePath}/${f}`, `${outputDir}/${f}`);
});
}
tryBundle(outputDir, _options) {
fs.mkdirSync(`${outputDir}/nodejs`);
this.copy(PACKAGE_JSON_PATTERN, `${outputDir}/nodejs`);
(0, child_process_1.execSync)('npm install', { cwd: `${outputDir}/nodejs` });
this.copy(SOURCE_JS_PATTERN, `${outputDir}/nodejs/node_modules`);
return true;
}
toJSON() {
return {
codePath: path.relative(__dirname, this.codePath),
};
}
}
exports.CanaryCodeBundler = CanaryCodeBundler;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1idW5kbGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGktY2FuYXJ5L2NvZGUtYnVuZGxpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQXlDO0FBQ3pDLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFHN0IsTUFBTSxvQkFBb0IsR0FBRyxpQkFBaUIsQ0FBQztBQUMvQyxNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQztBQUVyQyxNQUFhLGlCQUFpQjtJQUM1QixZQUFxQixRQUFnQjtRQUFoQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ25DLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsT0FBZSxFQUFFLFNBQWlCO1FBQ3JDLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFDRCxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDMUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM3QixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDWCxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLFNBQVMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFNBQVMsQ0FBQyxTQUFpQixFQUFFLFFBQXlCO1FBQ3BELEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLFNBQVMsQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxTQUFTLFNBQVMsQ0FBQyxDQUFDO1FBRXZELElBQUEsd0JBQVEsRUFBQyxhQUFhLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxTQUFTLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLFNBQVMsc0JBQXNCLENBQUMsQ0FBQztRQUVqRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTztZQUNMLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2xELENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFyQ0QsOENBcUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBCdW5kbGluZ09wdGlvbnMsIElMb2NhbEJ1bmRsaW5nIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG5jb25zdCBQQUNLQUdFX0pTT05fUEFUVEVSTiA9IC9ecGFja2FnZVxcLmpzb24kLztcbmNvbnN0IFNPVVJDRV9KU19QQVRURVJOID0gL14uK1xcLmpzJC87XG5cbmV4cG9ydCBjbGFzcyBDYW5hcnlDb2RlQnVuZGxlciBpbXBsZW1lbnRzIElMb2NhbEJ1bmRsaW5nIHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgY29kZVBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IGNvZGVQYXRoU3RhdHMgPSBmcy5sc3RhdFN5bmModGhpcy5jb2RlUGF0aCk7XG4gICAgaWYgKCFjb2RlUGF0aFN0YXRzLmlzRGlyZWN0b3J5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY29kZVBhdGg6ICR7dGhpcy5jb2RlUGF0aH1gKTtcbiAgICB9XG4gIH1cblxuICBjb3B5KHBhdHRlcm46IFJlZ0V4cCwgb3V0cHV0RGlyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBvdXRwdXREaXJTdGF0cyA9IGZzLmxzdGF0U3luYyhvdXRwdXREaXIpO1xuICAgIGlmICghb3V0cHV0RGlyU3RhdHMuaXNEaXJlY3RvcnkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBvdXRwdXREaXI6ICR7b3V0cHV0RGlyfWApO1xuICAgIH1cbiAgICBmcy5yZWFkZGlyU3luYyh0aGlzLmNvZGVQYXRoKVxuICAgICAgLmZpbHRlcihmID0+IGYubWF0Y2gocGF0dGVybikpXG4gICAgICAuZm9yRWFjaChmID0+IHtcbiAgICAgICAgZnMuY29weUZpbGVTeW5jKGAke3RoaXMuY29kZVBhdGh9LyR7Zn1gLCBgJHtvdXRwdXREaXJ9LyR7Zn1gKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgdHJ5QnVuZGxlKG91dHB1dERpcjogc3RyaW5nLCBfb3B0aW9uczogQnVuZGxpbmdPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgZnMubWtkaXJTeW5jKGAke291dHB1dERpcn0vbm9kZWpzYCk7XG5cbiAgICB0aGlzLmNvcHkoUEFDS0FHRV9KU09OX1BBVFRFUk4sIGAke291dHB1dERpcn0vbm9kZWpzYCk7XG5cbiAgICBleGVjU3luYygnbnBtIGluc3RhbGwnLCB7IGN3ZDogYCR7b3V0cHV0RGlyfS9ub2RlanNgIH0pO1xuXG4gICAgdGhpcy5jb3B5KFNPVVJDRV9KU19QQVRURVJOLCBgJHtvdXRwdXREaXJ9L25vZGVqcy9ub2RlX21vZHVsZXNgKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdG9KU09OKCk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGVQYXRoOiBwYXRoLnJlbGF0aXZlKF9fZGlybmFtZSwgdGhpcy5jb2RlUGF0aCksXG4gICAgfTtcbiAgfVxufVxuIl19