@boostercloud/cli
Version:
CLI of the Booster Framework, the next level of abstraction for cloud-native applications
40 lines (39 loc) • 1.67 kB
JavaScript
;
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;
}