UNPKG

6.36 kBJavaScriptView Raw
1'use strict';
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6exports.generate = void 0;
7const fs_extra_1 = __importDefault(require("fs-extra"));
8const ora_1 = __importDefault(require("ora"));
9const path_1 = __importDefault(require("path"));
10const logger_1 = require("@surgio/logger");
11const artifact_1 = require("./generator/artifact");
12const template_1 = require("./generator/template");
13const remote_snippet_1 = require("./utils/remote-snippet");
14const spinner = ora_1.default();
15async function run(config, skipFail) {
16 const artifactList = config.artifacts;
17 const distPath = config.output;
18 const remoteSnippetsConfig = config.remoteSnippets || [];
19 const remoteSnippetList = await remote_snippet_1.loadRemoteSnippetList(remoteSnippetsConfig);
20 const templateEngine = template_1.getEngine(config.templateDir);
21 await fs_extra_1.default.remove(distPath);
22 await fs_extra_1.default.mkdir(distPath);
23 for (const artifact of artifactList) {
24 spinner.start(`正在生成规则 ${artifact.name}`);
25 try {
26 const artifactInstance = new artifact_1.Artifact(config, artifact, {
27 remoteSnippetList,
28 });
29 artifactInstance.on('initProvider:end', () => {
30 spinner.text = `已处理 Provider ${artifactInstance.initProgress}/${artifactInstance.providerNameList.length}...`;
31 });
32 await artifactInstance.init();
33 const result = artifactInstance.render(templateEngine);
34 const destFilePath = path_1.default.join(config.output, artifact.name);
35 if (artifact.destDir) {
36 fs_extra_1.default.accessSync(artifact.destDir, fs_extra_1.default.constants.W_OK);
37 await fs_extra_1.default.writeFile(path_1.default.join(artifact.destDir, artifact.name), result);
38 }
39 else {
40 await fs_extra_1.default.writeFile(destFilePath, result);
41 }
42 spinner.succeed(`规则 ${artifact.name} 生成成功`);
43 }
44 catch (err) {
45 spinner.fail(`规则 ${artifact.name} 生成失败`);
46 // istanbul ignore next
47 if (skipFail) {
48 console.error(err.stack || err);
49 }
50 else {
51 throw err;
52 }
53 }
54 }
55}
56async function generate(config, artifact, remoteSnippetList, templateEngine) {
57 const artifactInstance = new artifact_1.Artifact(config, artifact, {
58 remoteSnippetList,
59 });
60 await artifactInstance.init();
61 return artifactInstance.render(templateEngine);
62}
63exports.generate = generate;
64async function default_1(config, skipFail) {
65 logger_1.logger.info('开始生成规则');
66 await run(config, skipFail)
67 .catch(err => {
68 // istanbul ignore next
69 if (spinner.isSpinning) {
70 spinner.fail();
71 }
72 throw err;
73 });
74 logger_1.logger.info('规则生成成功');
75}
76exports.default = default_1;
77//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvZ2VuZXJhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7Ozs7QUFFYix3REFBMEI7QUFFMUIsOENBQXNCO0FBQ3RCLGdEQUF3QjtBQUN4QiwyQ0FBd0M7QUFDeEMsbURBQWdEO0FBRWhELG1EQUFpRDtBQUtqRCwyREFBK0Q7QUFFL0QsTUFBTSxPQUFPLEdBQUcsYUFBRyxFQUFFLENBQUM7QUFFdEIsS0FBSyxVQUFVLEdBQUcsQ0FBQyxNQUFxQixFQUFFLFFBQWtCO0lBQzFELE1BQU0sWUFBWSxHQUFrQyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQ3JFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDL0IsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztJQUN6RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sc0NBQXFCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM1RSxNQUFNLGNBQWMsR0FBRyxvQkFBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVyRCxNQUFNLGtCQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sa0JBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFekIsS0FBSyxNQUFNLFFBQVEsSUFBSSxZQUFZLEVBQUU7UUFDbkMsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLElBQUk7WUFDRixNQUFNLGdCQUFnQixHQUFHLElBQUksbUJBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFO2dCQUN0RCxpQkFBaUI7YUFDbEIsQ0FBQyxDQUFDO1lBRUgsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtnQkFDM0MsT0FBTyxDQUFDLElBQUksR0FBRyxnQkFBZ0IsZ0JBQWdCLENBQUMsWUFBWSxJQUFJLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ2hILENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUU5QixNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDdkQsTUFBTSxZQUFZLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU3RCxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BCLGtCQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsa0JBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELE1BQU0sa0JBQUUsQ0FBQyxTQUFTLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUN4RTtpQkFBTTtnQkFDTCxNQUFNLGtCQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQzthQUMxQztZQUVELE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQztTQUM3QztRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDO1lBRXpDLHVCQUF1QjtZQUN2QixJQUFJLFFBQVEsRUFBRTtnQkFDWixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLENBQUM7YUFDakM7aUJBQU07Z0JBQ0wsTUFBTSxHQUFHLENBQUM7YUFDWDtTQUNGO0tBQ0Y7QUFDSCxDQUFDO0FBRU0sS0FBSyxVQUFVLFFBQVEsQ0FDNUIsTUFBcUIsRUFDckIsUUFBd0IsRUFDeEIsaUJBQStDLEVBQy9DLGNBQTJCO0lBRTNCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxtQkFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7UUFDdEQsaUJBQWlCO0tBQ2xCLENBQUMsQ0FBQztJQUVILE1BQU0sZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFOUIsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQWJELDRCQWFDO0FBRWMsS0FBSyxvQkFBVSxNQUFxQixFQUFFLFFBQWtCO0lBQ3JFLGVBQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEIsTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQztTQUN4QixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDWCx1QkFBdUI7UUFDdkIsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNoQjtRQUNELE1BQU0sR0FBRyxDQUFDO0lBQ1osQ0FBQyxDQUFDLENBQUM7SUFDTCxlQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFYRCw0QkFXQyJ9
\No newline at end of file