UNPKG

aws-cdk

Version:

CDK Toolkit, the command line tool for CDK apps

63 lines 8.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.invokeBuiltinHooks = void 0; const path = require("path"); const os_1 = require("./os"); /** * Invoke hooks for the given init template * * Sometimes templates need more complex logic than just replacing tokens. A 'hook' can be * used to do additional processing other than copying files. * * Hooks used to be defined externally to the CLI, by running arbitrarily * substituted shell scripts in the target directory. * * In practice, they're all TypeScript files and all the same, and the dynamism * that the original solution allowed wasn't used at all. Worse, since the CLI * is now bundled the hooks can't even reuse code from the CLI libraries at all * anymore, so all shared code would have to be copy/pasted. * * Bundle hooks as built-ins into the CLI, so they get bundled and can take advantage * of all shared code. */ async function invokeBuiltinHooks(target, context) { switch (target.language) { case 'csharp': if (['app', 'sample-app'].includes(target.templateName)) { return dotnetAddProject(target.targetDirectory, context); } break; case 'fsharp': if (['app', 'sample-app'].includes(target.templateName)) { return dotnetAddProject(target.targetDirectory, context, 'fsproj'); } break; case 'python': // We can't call this file 'requirements.template.txt' because Dependabot needs to be able to find it. // Therefore, keep the in-repo name but still substitute placeholders. await context.substitutePlaceholdersIn('requirements.txt'); break; case 'java': // We can't call this file 'pom.template.xml'... for the same reason as Python above. await context.substitutePlaceholdersIn('pom.xml'); break; case 'javascript': case 'typescript': // See above, but for 'package.json'. await context.substitutePlaceholdersIn('package.json'); } } exports.invokeBuiltinHooks = invokeBuiltinHooks; async function dotnetAddProject(targetDirectory, context, ext = 'csproj') { const pname = context.placeholder('name.PascalCased'); const slnPath = path.join(targetDirectory, 'src', `${pname}.sln`); const csprojPath = path.join(targetDirectory, 'src', pname, `${pname}.${ext}`); try { await (0, os_1.shell)(['dotnet', 'sln', slnPath, 'add', csprojPath]); } catch (e) { throw new Error(`Could not add project ${pname}.${ext} to solution ${pname}.sln. ${e.message}`); } } ; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC1ob29rcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImluaXQtaG9va3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQTZCN0I7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSSxLQUFLLFVBQVUsa0JBQWtCLENBQUMsTUFBa0IsRUFBRSxPQUFvQjtJQUMvRSxRQUFRLE1BQU0sQ0FBQyxRQUFRLEVBQUU7UUFDdkIsS0FBSyxRQUFRO1lBQ1gsSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUN2RCxPQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDMUQ7WUFDRCxNQUFNO1FBRVIsS0FBSyxRQUFRO1lBQ1gsSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUN2RCxPQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ3BFO1lBQ0QsTUFBTTtRQUVSLEtBQUssUUFBUTtZQUNYLHNHQUFzRztZQUN0RyxzRUFBc0U7WUFDdEUsTUFBTSxPQUFPLENBQUMsd0JBQXdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUMzRCxNQUFNO1FBRVIsS0FBSyxNQUFNO1lBQ1QscUZBQXFGO1lBQ3JGLE1BQU0sT0FBTyxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xELE1BQU07UUFFUixLQUFLLFlBQVksQ0FBQztRQUNsQixLQUFLLFlBQVk7WUFDZixxQ0FBcUM7WUFDckMsTUFBTSxPQUFPLENBQUMsd0JBQXdCLENBQUMsY0FBYyxDQUFDLENBQUM7S0FFMUQ7QUFDSCxDQUFDO0FBL0JELGdEQStCQztBQUVELEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxlQUF1QixFQUFFLE9BQW9CLEVBQUUsR0FBRyxHQUFHLFFBQVE7SUFDM0YsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDbEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLElBQUk7UUFDRixNQUFNLElBQUEsVUFBSyxFQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7S0FDNUQ7SUFBQyxPQUFPLENBQU0sRUFBRTtRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLEtBQUssSUFBSSxHQUFHLGdCQUFnQixLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDakc7QUFDSCxDQUFDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBzaGVsbCB9IGZyb20gJy4vb3MnO1xuXG5leHBvcnQgdHlwZSBTdWJzdGl0dXRlUGxhY2Vob2xkZXJzID0gKC4uLmZpbGVOYW1lczogc3RyaW5nW10pID0+IFByb21pc2U8dm9pZD47XG5cbi8qKlxuICogSGVscGVycyBwYXNzZWQgdG8gaG9vayBmdW5jdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb29rQ29udGV4dCB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBmdW5jdGlvbiB0byByZXBsYWNlIHBsYWNlaG9sZGVycyBvbiBhcmJpdHJhcnkgZmlsZXNcbiAgICpcbiAgICogVGhpcyBtYWtlcyB0b2tlbiBzdWJzdGl0dXRpb24gYXZhaWxhYmxlIHRvIG5vbi1gLnRlbXBsYXRlYCBmaWxlcy5cbiAgICovXG4gIHJlYWRvbmx5IHN1YnN0aXR1dGVQbGFjZWhvbGRlcnNJbjogU3Vic3RpdHV0ZVBsYWNlaG9sZGVycztcblxuICAvKipcbiAgICogUmV0dXJuIGEgc2luZ2xlIHBsYWNlaG9sZGVyXG4gICAqL1xuICBwbGFjZWhvbGRlcihuYW1lOiBzdHJpbmcpOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEludm9rZUhvb2sgPSAodGFyZ2V0RGlyZWN0b3J5OiBzdHJpbmcsIGNvbnRleHQ6IEhvb2tDb250ZXh0KSA9PiBQcm9taXNlPHZvaWQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEhvb2tUYXJnZXQge1xuICByZWFkb25seSB0YXJnZXREaXJlY3Rvcnk6IHN0cmluZztcbiAgcmVhZG9ubHkgdGVtcGxhdGVOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxhbmd1YWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW52b2tlIGhvb2tzIGZvciB0aGUgZ2l2ZW4gaW5pdCB0ZW1wbGF0ZVxuICpcbiAqIFNvbWV0aW1lcyB0ZW1wbGF0ZXMgbmVlZCBtb3JlIGNvbXBsZXggbG9naWMgdGhhbiBqdXN0IHJlcGxhY2luZyB0b2tlbnMuIEEgJ2hvb2snIGNhbiBiZVxuICogdXNlZCB0byBkbyBhZGRpdGlvbmFsIHByb2Nlc3Npbmcgb3RoZXIgdGhhbiBjb3B5aW5nIGZpbGVzLlxuICpcbiAqIEhvb2tzIHVzZWQgdG8gYmUgZGVmaW5lZCBleHRlcm5hbGx5IHRvIHRoZSBDTEksIGJ5IHJ1bm5pbmcgYXJiaXRyYXJpbHlcbiAqIHN1YnN0aXR1dGVkIHNoZWxsIHNjcmlwdHMgaW4gdGhlIHRhcmdldCBkaXJlY3RvcnkuXG4gKlxuICogSW4gcHJhY3RpY2UsIHRoZXkncmUgYWxsIFR5cGVTY3JpcHQgZmlsZXMgYW5kIGFsbCB0aGUgc2FtZSwgYW5kIHRoZSBkeW5hbWlzbVxuICogdGhhdCB0aGUgb3JpZ2luYWwgc29sdXRpb24gYWxsb3dlZCB3YXNuJ3QgdXNlZCBhdCBhbGwuIFdvcnNlLCBzaW5jZSB0aGUgQ0xJXG4gKiBpcyBub3cgYnVuZGxlZCB0aGUgaG9va3MgY2FuJ3QgZXZlbiByZXVzZSBjb2RlIGZyb20gdGhlIENMSSBsaWJyYXJpZXMgYXQgYWxsXG4gKiBhbnltb3JlLCBzbyBhbGwgc2hhcmVkIGNvZGUgd291bGQgaGF2ZSB0byBiZSBjb3B5L3Bhc3RlZC5cbiAqXG4gKiBCdW5kbGUgaG9va3MgYXMgYnVpbHQtaW5zIGludG8gdGhlIENMSSwgc28gdGhleSBnZXQgYnVuZGxlZCBhbmQgY2FuIHRha2UgYWR2YW50YWdlXG4gKiBvZiBhbGwgc2hhcmVkIGNvZGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnZva2VCdWlsdGluSG9va3ModGFyZ2V0OiBIb29rVGFyZ2V0LCBjb250ZXh0OiBIb29rQ29udGV4dCkge1xuICBzd2l0Y2ggKHRhcmdldC5sYW5ndWFnZSkge1xuICAgIGNhc2UgJ2NzaGFycCc6XG4gICAgICBpZiAoWydhcHAnLCAnc2FtcGxlLWFwcCddLmluY2x1ZGVzKHRhcmdldC50ZW1wbGF0ZU5hbWUpKSB7XG4gICAgICAgIHJldHVybiBkb3RuZXRBZGRQcm9qZWN0KHRhcmdldC50YXJnZXREaXJlY3RvcnksIGNvbnRleHQpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdmc2hhcnAnOlxuICAgICAgaWYgKFsnYXBwJywgJ3NhbXBsZS1hcHAnXS5pbmNsdWRlcyh0YXJnZXQudGVtcGxhdGVOYW1lKSkge1xuICAgICAgICByZXR1cm4gZG90bmV0QWRkUHJvamVjdCh0YXJnZXQudGFyZ2V0RGlyZWN0b3J5LCBjb250ZXh0LCAnZnNwcm9qJyk7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3B5dGhvbic6XG4gICAgICAvLyBXZSBjYW4ndCBjYWxsIHRoaXMgZmlsZSAncmVxdWlyZW1lbnRzLnRlbXBsYXRlLnR4dCcgYmVjYXVzZSBEZXBlbmRhYm90IG5lZWRzIHRvIGJlIGFibGUgdG8gZmluZCBpdC5cbiAgICAgIC8vIFRoZXJlZm9yZSwga2VlcCB0aGUgaW4tcmVwbyBuYW1lIGJ1dCBzdGlsbCBzdWJzdGl0dXRlIHBsYWNlaG9sZGVycy5cbiAgICAgIGF3YWl0IGNvbnRleHQuc3Vic3RpdHV0ZVBsYWNlaG9sZGVyc0luKCdyZXF1aXJlbWVudHMudHh0Jyk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2phdmEnOlxuICAgICAgLy8gV2UgY2FuJ3QgY2FsbCB0aGlzIGZpbGUgJ3BvbS50ZW1wbGF0ZS54bWwnLi4uIGZvciB0aGUgc2FtZSByZWFzb24gYXMgUHl0aG9uIGFib3ZlLlxuICAgICAgYXdhaXQgY29udGV4dC5zdWJzdGl0dXRlUGxhY2Vob2xkZXJzSW4oJ3BvbS54bWwnKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnamF2YXNjcmlwdCc6XG4gICAgY2FzZSAndHlwZXNjcmlwdCc6XG4gICAgICAvLyBTZWUgYWJvdmUsIGJ1dCBmb3IgJ3BhY2thZ2UuanNvbicuXG4gICAgICBhd2FpdCBjb250ZXh0LnN1YnN0aXR1dGVQbGFjZWhvbGRlcnNJbigncGFja2FnZS5qc29uJyk7XG5cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBkb3RuZXRBZGRQcm9qZWN0KHRhcmdldERpcmVjdG9yeTogc3RyaW5nLCBjb250ZXh0OiBIb29rQ29udGV4dCwgZXh0ID0gJ2NzcHJvaicpIHtcbiAgY29uc3QgcG5hbWUgPSBjb250ZXh0LnBsYWNlaG9sZGVyKCduYW1lLlBhc2NhbENhc2VkJyk7XG4gIGNvbnN0IHNsblBhdGggPSBwYXRoLmpvaW4odGFyZ2V0RGlyZWN0b3J5LCAnc3JjJywgYCR7cG5hbWV9LnNsbmApO1xuICBjb25zdCBjc3Byb2pQYXRoID0gcGF0aC5qb2luKHRhcmdldERpcmVjdG9yeSwgJ3NyYycsIHBuYW1lLCBgJHtwbmFtZX0uJHtleHR9YCk7XG4gIHRyeSB7XG4gICAgYXdhaXQgc2hlbGwoWydkb3RuZXQnLCAnc2xuJywgc2xuUGF0aCwgJ2FkZCcsIGNzcHJvalBhdGhdKTtcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgYWRkIHByb2plY3QgJHtwbmFtZX0uJHtleHR9IHRvIHNvbHV0aW9uICR7cG5hbWV9LnNsbi4gJHtlLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG4iXX0=