UNPKG

@routineless/nx-aws-cdk

Version:
85 lines 3.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const devkit_1 = require("@nx/devkit"); const get_npm_scope_1 = require("@nx/js/src/utils/package-json/get-npm-scope"); const node_1 = require("@nx/node"); const path_1 = require("path"); const routineless_1 = require("../../../utils/routineless"); const workspace_1 = require("../../../utils/workspace"); const normalizeOptions = (options) => { return { ...options, name: `${options.name}-infra`, directory: `${options.projectRoot}/infra`, baseProjectName: options.name, }; }; const addStackToInfraApp = (tree, options) => { const routinelessConfig = (0, routineless_1.getRoutinelessConfig)(tree); if (!routinelessConfig || !routinelessConfig.infraApp) { devkit_1.logger.warn("Could not find infra app name at .routineless.json config. Can't add stack to infra app"); return; } let infraAppConfig; try { infraAppConfig = (0, devkit_1.readProjectConfiguration)(tree, routinelessConfig.infraApp); } catch (e) { devkit_1.logger.error('Could not find infra app'); return; } const mainInfraAppFilePath = (0, path_1.join)(infraAppConfig.root, 'src/main.ts'); const mainInfraAppFile = tree.read(mainInfraAppFilePath); if (mainInfraAppFile) { const { className } = (0, devkit_1.names)(options.baseProjectName); const { name } = options; const scope = (0, get_npm_scope_1.getNpmScope)(tree); const importStatement = Buffer.from(`import { ${className}Stack } from '${scope ? `@${scope}/` : ''}${name}'\n`); const stackCreationStatement = Buffer.from(`new ${className}Stack(app, \`${className}Stack\${stackEnvPostfix}\`, { ...baseStackProps })\n`); const resultContent = Buffer.concat([importStatement, mainInfraAppFile, stackCreationStatement]); tree.write(mainInfraAppFilePath, resultContent); } }; const updateAwsLambdaInfraProjectConfiguration = (tree, options) => { const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.name); const implicitDependencies = projectConfig.implicitDependencies || []; implicitDependencies.push(options.name.replace('infra', 'runtime')); projectConfig.implicitDependencies = implicitDependencies; (0, devkit_1.updateProjectConfiguration)(tree, options.name, projectConfig); }; const addFiles = (tree, options, filesType = 'files') => { const templateOptions = { ...options, ...(0, devkit_1.names)(options.baseProjectName), offsetFromRoot: (0, devkit_1.offsetFromRoot)(options.directory), runtimeProjectDirectory: options.directory.replace('infra', 'runtime'), template: '', }; (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, 'generatorFiles', filesType), options.directory, templateOptions); }; const awsLambdaInfraLibraryGenerator = async (tree, options) => { const tasks = []; const normalizedOptions = normalizeOptions(options); tasks.push(await (0, node_1.libraryGenerator)(tree, { ...normalizedOptions, projectNameAndRootFormat: 'as-provided', skipFormat: true, compiler: 'tsc', addPlugin: true, })); (0, workspace_1.deleteNodeLibRedundantDirs)(tree, normalizedOptions.directory); addFiles(tree, normalizedOptions); if (normalizedOptions.unitTestRunner === 'jest') { addFiles(tree, normalizedOptions, 'jest-files'); } updateAwsLambdaInfraProjectConfiguration(tree, normalizedOptions); if (normalizedOptions.addLambdaToInfraApp) { addStackToInfraApp(tree, normalizedOptions); } if (!normalizedOptions.skipFormat) { await (0, devkit_1.formatFiles)(tree); } return (0, devkit_1.runTasksInSerial)(...tasks); }; exports.default = awsLambdaInfraLibraryGenerator; //# sourceMappingURL=index.js.map