1 | ;
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | exports.generate = void 0;
|
7 | const fs_extra_1 = __importDefault(require("fs-extra"));
|
8 | const ora_1 = __importDefault(require("ora"));
|
9 | const path_1 = __importDefault(require("path"));
|
10 | const logger_1 = require("@surgio/logger");
|
11 | const artifact_1 = require("./generator/artifact");
|
12 | const template_1 = require("./generator/template");
|
13 | const remote_snippet_1 = require("./utils/remote-snippet");
|
14 | const spinner = ora_1.default();
|
15 | async 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 | }
|
56 | async 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 | }
|
63 | exports.generate = generate;
|
64 | async 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 | }
|
76 | exports.default = default_1;
|
77 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvZ2VuZXJhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7Ozs7QUFFYix3REFBMEI7QUFFMUIsOENBQXNCO0FBQ3RCLGdEQUF3QjtBQUN4QiwyQ0FBd0M7QUFDeEMsbURBQWdEO0FBRWhELG1EQUFpRDtBQUtqRCwyREFBK0Q7QUFFL0QsTUFBTSxPQUFPLEdBQUcsYUFBRyxFQUFFLENBQUM7QUFFdEIsS0FBSyxVQUFVLEdBQUcsQ0FBQyxNQUFxQixFQUFFLFFBQWtCO0lBQzFELE1BQU0sWUFBWSxHQUFrQyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQ3JFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDL0IsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztJQUN6RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sc0NBQXFCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM1RSxNQUFNLGNBQWMsR0FBRyxvQkFBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVyRCxNQUFNLGtCQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sa0JBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFekIsS0FBSyxNQUFNLFFBQVEsSUFBSSxZQUFZLEVBQUU7UUFDbkMsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLElBQUk7WUFDRixNQUFNLGdCQUFnQixHQUFHLElBQUksbUJBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFO2dCQUN0RCxpQkFBaUI7YUFDbEIsQ0FBQyxDQUFDO1lBRUgsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtnQkFDM0MsT0FBTyxDQUFDLElBQUksR0FBRyxnQkFBZ0IsZ0JBQWdCLENBQUMsWUFBWSxJQUFJLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ2hILENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUU5QixNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDdkQsTUFBTSxZQUFZLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU3RCxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BCLGtCQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsa0JBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELE1BQU0sa0JBQUUsQ0FBQyxTQUFTLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUN4RTtpQkFBTTtnQkFDTCxNQUFNLGtCQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQzthQUMxQztZQUVELE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQztTQUM3QztRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDO1lBRXpDLHVCQUF1QjtZQUN2QixJQUFJLFFBQVEsRUFBRTtnQkFDWixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLENBQUM7YUFDakM7aUJBQU07Z0JBQ0wsTUFBTSxHQUFHLENBQUM7YUFDWDtTQUNGO0tBQ0Y7QUFDSCxDQUFDO0FBRU0sS0FBSyxVQUFVLFFBQVEsQ0FDNUIsTUFBcUIsRUFDckIsUUFBd0IsRUFDeEIsaUJBQStDLEVBQy9DLGNBQTJCO0lBRTNCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxtQkFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7UUFDdEQsaUJBQWlCO0tBQ2xCLENBQUMsQ0FBQztJQUVILE1BQU0sZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFOUIsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQWJELDRCQWFDO0FBRWMsS0FBSyxvQkFBVSxNQUFxQixFQUFFLFFBQWtCO0lBQ3JFLGVBQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEIsTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQztTQUN4QixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDWCx1QkFBdUI7UUFDdkIsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNoQjtRQUNELE1BQU0sR0FBRyxDQUFDO0lBQ1osQ0FBQyxDQUFDLENBQUM7SUFDTCxlQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFYRCw0QkFXQyJ9 |
\ | No newline at end of file |