@featurevisor/core
Version:
Core package of Featurevisor for Node.js usage
54 lines • 2.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateCodePlugin = exports.ALLOWED_LANGUAGES_FOR_CODE_GENERATION = void 0;
exports.generateCodeForProject = generateCodeForProject;
const fs = require("fs");
const path = require("path");
const typescript_1 = require("./typescript");
exports.ALLOWED_LANGUAGES_FOR_CODE_GENERATION = ["typescript"];
async function generateCodeForProject(deps, cliOptions) {
const { rootDirectoryPath } = deps;
if (!cliOptions.language) {
throw new Error("Option `--language` is required");
}
if (!cliOptions.outDir) {
throw new Error("Option `--out-dir` is required");
}
const absolutePath = path.resolve(rootDirectoryPath, cliOptions.outDir);
if (!fs.existsSync(absolutePath)) {
console.log(`Creating output directory: ${absolutePath}`);
fs.mkdirSync(absolutePath, { recursive: true });
}
else {
console.log(`Output directory already exists at: ${absolutePath}`);
}
if (!exports.ALLOWED_LANGUAGES_FOR_CODE_GENERATION.includes(cliOptions.language)) {
console.log(`Only these languages are supported: ${exports.ALLOWED_LANGUAGES_FOR_CODE_GENERATION.join(", ")}`);
throw new Error(`Language ${cliOptions.language} is not supported for code generation`);
}
if (cliOptions.language === "typescript") {
return await (0, typescript_1.generateTypeScriptCodeForProject)(deps, absolutePath);
}
throw new Error(`Language ${cliOptions.language} is not supported`);
}
exports.generateCodePlugin = {
command: "generate-code",
handler: async function ({ rootDirectoryPath, projectConfig, datasource, parsed }) {
await generateCodeForProject({
rootDirectoryPath,
projectConfig,
datasource,
options: parsed,
}, {
language: parsed.language,
outDir: parsed.outDir,
});
},
examples: [
{
command: "generate-code --language typescript --out-dir src/generated",
description: "Generate TypeScript code for the project",
},
],
};
//# sourceMappingURL=index.js.map