UNPKG

@boostercloud/cli

Version:

CLI of the Booster Framework, the next level of abstraction for cloud-native applications

40 lines (39 loc) 1.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generate = generate; exports.template = template; exports.filePath = filePath; exports.getResourceType = getResourceType; const path = require("path"); const fs_extra_1 = require("fs-extra"); const Mustache = require("mustache"); const filenames_1 = require("../common/filenames"); const project_checker_1 = require("./project-checker"); const stub_publisher_1 = require("./stub-publisher"); async function generate(target) { await (0, project_checker_1.checkResourceExists)(target.name, target.placementDir, target.extension); (0, filenames_1.checkResourceNameIsValid)(target.name); const rendered = Mustache.render(target.template, { ...target.info }); const renderPath = filePath(target); await (0, fs_extra_1.outputFile)(renderPath, rendered); } function template(name) { const fileName = `${name}.stub`; const stubFile = (0, stub_publisher_1.resourceStubFilePath)(fileName); if ((0, stub_publisher_1.checkStubsFolderExists)() && (0, stub_publisher_1.checkResourceStubFileExists)(stubFile)) { return (0, fs_extra_1.readFileSync)(stubFile).toString(); } return (0, fs_extra_1.readFileSync)((0, stub_publisher_1.resourceTemplateFilePath)(fileName)).toString(); } function filePath(target) { const fileName = (0, filenames_1.classNameToFileName)(target.name); return path.join(process.cwd(), target.placementDir, `${fileName}${target.extension}`); } /** * Split path string to get resource folder name * * @param resourcePath path string */ function getResourceType(resourcePath) { return path.parse(resourcePath).name; }