@flowaccount/nx-aws-cdk
Version:
aws-cdk executors and generators for nx workspace
121 lines • 5.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildTarget = void 0;
const tslib_1 = require("tslib");
const aws_cdk_core_1 = require("@flowaccount/aws-cdk-core");
const path_1 = require("path");
const aws_cdk_core_2 = require("@flowaccount/aws-cdk-core");
const devkit_1 = require("@nx/devkit");
function runSynthExecutor(options, context, awscdkClient = new aws_cdk_core_1.AwsCdkClient((0, aws_cdk_core_1.awsCdkFactory)())) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
devkit_1.logger.info(`Building the cdk application`);
const iterator = yield buildTarget(options, context);
const buildOutput = (yield iterator.next()).value;
if (!buildOutput.success) {
return {
success: false,
};
}
devkit_1.logger.info(`output file ${buildOutput.outfile}`);
devkit_1.logger.info('Preparing cdk deploy command');
// const nxProjectConfiguration = getExecutedProjectConfiguration(context);
awscdkClient.cwd = context.cwd;
awscdkClient.printSdkVersion();
options.output = options.output
? (0, path_1.resolve)(context.root, options.output)
: (0, path_1.resolve)(context.root, 'dist/cdk.out');
const deployOptionFlag = options;
const cdkOptionFlag = options;
cdkOptionFlag.app = `node ${buildOutput.outfile}`;
const deployOption = (0, aws_cdk_core_1.getDeployOptions)(deployOptionFlag);
const cdkOption = (0, aws_cdk_core_2.getCdkOptions)(cdkOptionFlag);
// argument
const argsss = options;
if (argsss) {
process.env.serviceName = argsss['serviceName'];
process.env.targetGroupArn = argsss['targetGroupArn'];
process.env.secretArn = argsss['secretArn'];
process.env.asgName = argsss['asgName'];
process.env.portMap = argsss['portMap'];
process.env.site = argsss['site'];
process.env.stage = argsss['stage'];
process.env.imageName = argsss['imageName'];
process.env.cloudmapServiceName = argsss['cloudmapServiceName'];
process.env.cloudmapServiceArn = argsss['cloudmapServiceArn'];
process.env.cloudmapServiceId = argsss['cloudmapServiceId'];
process.env.cpu = argsss['cpu'];
process.env.memory = argsss['memory'];
process.env.useServiceDiscovery = argsss['useServiceDiscovery'];
process.env.existingCluster = argsss['existingCluster'];
process.env.keyPairName = argsss['keyPairName'];
process.env.existingRole = argsss['existingRole'];
process.env.owner = argsss['owner'];
}
// require('dotenv-json')(argsss)
// cdkOption.push({ flag: "serviceName", value: argsss["serviceName"] });
// cdkOption.push({ flag: "targetGroupArn", value: argsss["targetGroupArn"] });
// cdkOption.push({ flag: "secretArn", value: argsss["secretArn"] });
devkit_1.logger.info(cdkOption);
// in cdkOption MUST already have the service-name argument from process.argv -- success!
// in environment.ts inside dotnet.workspace in environment.sandbox.ts
// usage is const serviceName = process.argv["service-name"]
awscdkClient.deploy(`${options.stackName}`, cdkOption, deployOption);
return {
success: true,
};
});
}
exports.default = runSynthExecutor;
function buildTarget(options, context) {
return tslib_1.__asyncGenerator(this, arguments, function* buildTarget_1() {
var _a, e_1, _b, _c;
try {
for (var _d = true, _e = tslib_1.__asyncValues(startBuild(options, context)), _f; _f = yield tslib_1.__await(_e.next()), _a = _f.done, !_a; _d = true) {
_c = _f.value;
_d = false;
const event = _c;
if (!event.success) {
devkit_1.logger.error('There was an error with the build. See above.');
devkit_1.logger.info(`${event.outfile} was not restarted.`);
}
yield yield tslib_1.__await(event);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (!_d && !_a && (_b = _e.return)) yield tslib_1.__await(_b.call(_e));
}
finally { if (e_1) throw e_1.error; }
}
});
}
exports.buildTarget = buildTarget;
function startBuild(options, context) {
return tslib_1.__asyncGenerator(this, arguments, function* startBuild_1() {
const buildTarget = (0, devkit_1.parseTargetString)(options.buildTarget, context.projectGraph);
yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(yield tslib_1.__await((0, devkit_1.runExecutor)(buildTarget, {
// watch: options.watch,
}, context)))));
});
}
// export const getExecutedProjectConfiguration = (context: ExecutorContext) =>
// context.workspace.projects[context.projectName as string];
function parseArgs() {
const args = process.argv;
return args
.map((t) => t.trim())
.reduce((m, c) => {
if (c.startsWith('--')) {
const [key, value] = c.substring(2).split('=');
if (!key || !value) {
throw new Error(`Invalid args: ${args}`);
}
if (!m)
m = {};
m[key] = value;
return m;
}
}, {});
}
//# sourceMappingURL=deploy.executor.js.map