@wuapi/generator
Version:
47 lines (46 loc) • 1.91 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const plugin_base_1 = require("./plugin_base");
/**
* Generate a json repository.
*/
class RepositoryPlugin extends plugin_base_1.BasePlugin {
/**
* Returns the description of this plugin.
*/
getDescription() {
return {
name: "repository",
abbreviation: "r",
version: "1.0.0",
description: "Generate a Json repository.",
arguments: [],
};
}
process(project, outputDir, args) {
new RepositoryProcessor(this, project, outputDir, args).process();
}
}
exports.default = RepositoryPlugin;
class RepositoryProcessor extends plugin_base_1.ProjectProcessor {
process() {
fs_1.default.mkdirSync(this.rootDir, { recursive: true });
const configFilePath = [this.rootDir, 'list.json'].join(path_1.default.sep);
const projectFileName = `project-${this.project.version}.json`;
const projectFilePath = [this.rootDir, projectFileName].join(path_1.default.sep);
// File
let config = (fs_1.default.existsSync(configFilePath)) ? JSON.parse(fs_1.default.readFileSync(configFilePath).toString()) : {};
let newConfig = {};
newConfig.current = this.project.version;
newConfig.versions = config?.versions ?? {};
newConfig.versions[this.project.version] = `${this.plugin.getName()}/${projectFileName}`;
// Write file
fs_1.default.writeFileSync(configFilePath, JSON.stringify(newConfig, undefined, 4));
fs_1.default.writeFileSync(projectFilePath, JSON.stringify(this.project, undefined, 4));
}
}