@platforma-sdk/tengo-builder 2.4.24 → 2.4.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rolldown/runtime.cjs +29 -0
- package/dist/commands/build.cjs +106 -150
- package/dist/commands/build.cjs.map +1 -1
- package/dist/commands/build.d.ts +15 -10
- package/dist/commands/build.js +101 -126
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/check.cjs +32 -36
- package/dist/commands/check.cjs.map +1 -1
- package/dist/commands/check.d.ts +13 -8
- package/dist/commands/check.js +30 -33
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/dump/artifacts.cjs +22 -22
- package/dist/commands/dump/artifacts.cjs.map +1 -1
- package/dist/commands/dump/artifacts.d.ts +13 -8
- package/dist/commands/dump/artifacts.js +20 -19
- package/dist/commands/dump/artifacts.js.map +1 -1
- package/dist/commands/dump/software.cjs +19 -21
- package/dist/commands/dump/software.cjs.map +1 -1
- package/dist/commands/dump/software.d.ts +12 -7
- package/dist/commands/dump/software.js +17 -18
- package/dist/commands/dump/software.js.map +1 -1
- package/dist/commands/test.cjs +32 -33
- package/dist/commands/test.cjs.map +1 -1
- package/dist/commands/test.d.ts +13 -8
- package/dist/commands/test.js +30 -30
- package/dist/commands/test.js.map +1 -1
- package/dist/compiler/artifactset.cjs +59 -68
- package/dist/compiler/artifactset.cjs.map +1 -1
- package/dist/compiler/artifactset.js +60 -66
- package/dist/compiler/artifactset.js.map +1 -1
- package/dist/compiler/compiler.cjs +241 -314
- package/dist/compiler/compiler.cjs.map +1 -1
- package/dist/compiler/compiler.js +241 -312
- package/dist/compiler/compiler.js.map +1 -1
- package/dist/compiler/compileroptions.cjs +16 -35
- package/dist/compiler/compileroptions.cjs.map +1 -1
- package/dist/compiler/compileroptions.js +17 -33
- package/dist/compiler/compileroptions.js.map +1 -1
- package/dist/compiler/main.cjs +258 -334
- package/dist/compiler/main.cjs.map +1 -1
- package/dist/compiler/main.js +256 -311
- package/dist/compiler/main.js.map +1 -1
- package/dist/compiler/package.cjs +21 -35
- package/dist/compiler/package.cjs.map +1 -1
- package/dist/compiler/package.js +21 -34
- package/dist/compiler/package.js.map +1 -1
- package/dist/compiler/source.cjs +239 -308
- package/dist/compiler/source.cjs.map +1 -1
- package/dist/compiler/source.js +239 -304
- package/dist/compiler/source.js.map +1 -1
- package/dist/compiler/template.cjs +30 -35
- package/dist/compiler/template.cjs.map +1 -1
- package/dist/compiler/template.js +29 -33
- package/dist/compiler/template.js.map +1 -1
- package/dist/compiler/util.cjs +40 -61
- package/dist/compiler/util.cjs.map +1 -1
- package/dist/compiler/util.js +36 -39
- package/dist/compiler/util.js.map +1 -1
- package/dist/index.cjs +14 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +15 -11
- package/dist/index.js +13 -12
- package/dist/index.js.map +1 -1
- package/dist/shared/basecmd.cjs +42 -33
- package/dist/shared/basecmd.cjs.map +1 -1
- package/dist/shared/basecmd.js +41 -31
- package/dist/shared/basecmd.js.map +1 -1
- package/dist/shared/dump.cjs +73 -107
- package/dist/shared/dump.cjs.map +1 -1
- package/dist/shared/dump.js +73 -105
- package/dist/shared/dump.js.map +1 -1
- package/dist/shared/proc.cjs +22 -18
- package/dist/shared/proc.cjs.map +1 -1
- package/dist/shared/proc.js +21 -16
- package/dist/shared/proc.js.map +1 -1
- package/package.json +10 -10
- package/dist/commands/build.d.ts.map +0 -1
- package/dist/commands/check.d.ts.map +0 -1
- package/dist/commands/dump/artifacts.d.ts.map +0 -1
- package/dist/commands/dump/software.d.ts.map +0 -1
- package/dist/commands/test.d.ts.map +0 -1
- package/dist/compiler/artifactset.d.ts +0 -24
- package/dist/compiler/artifactset.d.ts.map +0 -1
- package/dist/compiler/compiler.d.ts +0 -42
- package/dist/compiler/compiler.d.ts.map +0 -1
- package/dist/compiler/compileroptions.d.ts +0 -6
- package/dist/compiler/compileroptions.d.ts.map +0 -1
- package/dist/compiler/main.d.ts +0 -35
- package/dist/compiler/main.d.ts.map +0 -1
- package/dist/compiler/package.d.ts +0 -44
- package/dist/compiler/package.d.ts.map +0 -1
- package/dist/compiler/source.d.ts +0 -54
- package/dist/compiler/source.d.ts.map +0 -1
- package/dist/compiler/template.d.ts +0 -22
- package/dist/compiler/template.d.ts.map +0 -1
- package/dist/compiler/test.artifacts.d.ts +0 -47
- package/dist/compiler/test.artifacts.d.ts.map +0 -1
- package/dist/compiler/util.d.ts +0 -8
- package/dist/compiler/util.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/shared/basecmd.d.ts +0 -12
- package/dist/shared/basecmd.d.ts.map +0 -1
- package/dist/shared/dump.d.ts +0 -6
- package/dist/shared/dump.d.ts.map +0 -1
- package/dist/shared/proc.d.ts +0 -5
- package/dist/shared/proc.d.ts.map +0 -1
package/dist/commands/build.js
CHANGED
|
@@ -1,107 +1,92 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import * as
|
|
7
|
-
import * as
|
|
8
|
-
import * as
|
|
1
|
+
import { createLogger } from "../compiler/util.js";
|
|
2
|
+
import { compile, getPackageInfo, savePacks } from "../compiler/main.js";
|
|
3
|
+
import { CtagsFlags, GlobalFlags } from "../shared/basecmd.js";
|
|
4
|
+
import { spawnSync } from "node:child_process";
|
|
5
|
+
import { Command } from "@oclif/core";
|
|
6
|
+
import * as path from "node:path";
|
|
7
|
+
import * as fs from "node:fs";
|
|
8
|
+
import * as fsp from "node:fs/promises";
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
}
|
|
10
|
+
//#region src/commands/build.ts
|
|
11
|
+
var Build = class Build extends Command {
|
|
12
|
+
static description = "build tengo sources into single distributable pack file";
|
|
13
|
+
static examples = ["<%= config.bin %> <%= command.id %>"];
|
|
14
|
+
static flags = {
|
|
15
|
+
...GlobalFlags,
|
|
16
|
+
...CtagsFlags
|
|
17
|
+
};
|
|
18
|
+
async run() {
|
|
19
|
+
const { flags } = await this.parse(Build);
|
|
20
|
+
const logger = createLogger(flags["log-level"]);
|
|
21
|
+
const packageInfo = getPackageInfo(process.cwd(), logger);
|
|
22
|
+
const compiledDist = compile(logger, packageInfo, "dist");
|
|
23
|
+
savePacks(logger, compiledDist, "dist");
|
|
24
|
+
logger.info("Template Pack build done.");
|
|
25
|
+
const { dts, cjs, mjs } = generateTsBinding(compiledDist);
|
|
26
|
+
await fsp.writeFile("dist/index.d.ts", dts);
|
|
27
|
+
if (packageInfo.type === "module") {
|
|
28
|
+
await fsp.writeFile("dist/index.cjs", cjs);
|
|
29
|
+
await fsp.writeFile("dist/index.js", mjs);
|
|
30
|
+
} else {
|
|
31
|
+
await fsp.writeFile("dist/index.js", cjs);
|
|
32
|
+
await fsp.writeFile("dist/index.mjs", mjs);
|
|
33
|
+
}
|
|
34
|
+
mergeTagsEnvs(flags);
|
|
35
|
+
if (flags["generate-tags"]) checkAndGenerateCtags(logger, flags);
|
|
36
|
+
logger.info("Template Pack build done.");
|
|
37
|
+
}
|
|
38
|
+
};
|
|
41
39
|
function generateTsBinding(compiledDist) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
mjs += `\n};\n`;
|
|
60
|
-
return { dts, cjs, mjs };
|
|
40
|
+
let dts = `declare type TemplateFromFile = { readonly type: "from-file"; readonly path: string; };\n`;
|
|
41
|
+
dts += `declare type TplName = ${compiledDist.templates.map((tpl) => "\"" + tpl.fullName.id + "\"").join(" | ")};\n`;
|
|
42
|
+
dts += `declare const Templates: Record<TplName, TemplateFromFile>;\n`;
|
|
43
|
+
dts += `export { Templates };\n`;
|
|
44
|
+
let cjs = `module.exports = { Templates: {\n`;
|
|
45
|
+
let mjs = `import { resolve } from 'node:path';\nexport const Templates = {\n`;
|
|
46
|
+
const recordsCjs = compiledDist.templates.map((tpl) => ` '${tpl.fullName.id}': { type: 'from-file', path: require.resolve('./tengo/tpl/${tpl.fullName.id}.plj.gz') }`).join(",\n");
|
|
47
|
+
const recordsMjs = compiledDist.templates.map((tpl) => ` '${tpl.fullName.id}': { type: 'from-file', path: resolve(import.meta.dirname, './tengo/tpl/${tpl.fullName.id}.plj.gz') }`).join(",\n");
|
|
48
|
+
cjs += recordsCjs;
|
|
49
|
+
mjs += recordsMjs;
|
|
50
|
+
cjs += `\n}};\n`;
|
|
51
|
+
mjs += `\n};\n`;
|
|
52
|
+
return {
|
|
53
|
+
dts,
|
|
54
|
+
cjs,
|
|
55
|
+
mjs
|
|
56
|
+
};
|
|
61
57
|
}
|
|
62
58
|
function mergeTagsEnvs(flags) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
if (process.env.TAGS_FILE != undefined) {
|
|
67
|
-
flags["tags-file"] = process.env.TAGS_FILE;
|
|
68
|
-
}
|
|
69
|
-
if (process.env.TAGS_ADDITIONAL_ARGS != undefined) {
|
|
70
|
-
flags["tags-additional-args"] = process.env.TAGS_ADDITIONAL_ARGS.split(",");
|
|
71
|
-
}
|
|
59
|
+
if (process.env.GENERATE_TAGS != void 0) flags["generate-tags"] = process.env.GENERATE_TAGS == "true";
|
|
60
|
+
if (process.env.TAGS_FILE != void 0) flags["tags-file"] = process.env.TAGS_FILE;
|
|
61
|
+
if (process.env.TAGS_ADDITIONAL_ARGS != void 0) flags["tags-additional-args"] = process.env.TAGS_ADDITIONAL_ARGS.split(",");
|
|
72
62
|
}
|
|
73
63
|
function checkAndGenerateCtags(logger, flags) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
// Increase the depth if you need to.
|
|
81
|
-
const tengoFiles = toRelativePath(rootDir, getTengoFiles(rootDir, 9));
|
|
82
|
-
logger.info(`Generating tags for tengo autocompletion from "${rootDir}" \
|
|
83
|
-
in "${fileName}", additional arguments: "${additionalArgs.join('" "')}".
|
|
64
|
+
const fileName = path.resolve(flags["tags-file"]);
|
|
65
|
+
const rootDir = path.dirname(fileName);
|
|
66
|
+
const additionalArgs = flags["tags-additional-args"];
|
|
67
|
+
const tengoFiles = toRelativePath(rootDir, getTengoFiles(rootDir, 9));
|
|
68
|
+
logger.info(`Generating tags for tengo autocompletion from "${rootDir}" \
|
|
69
|
+
in "${fileName}", additional arguments: "${additionalArgs.join("\" \"")}".
|
|
84
70
|
Found ${tengoFiles.length} tengo files...`);
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
console.log(`
|
|
71
|
+
const result = spawnSync("ctags", [
|
|
72
|
+
"-f",
|
|
73
|
+
fileName,
|
|
74
|
+
...additionalArgs,
|
|
75
|
+
"--langdef=tengo",
|
|
76
|
+
"--map-tengo=+.tengo",
|
|
77
|
+
"--kinddef-tengo=f,function,function",
|
|
78
|
+
"--regex-tengo=/^\\s*(.*)(:| :=| =) ?func.*/\\1/f/",
|
|
79
|
+
"--kinddef-tengo=c,constant,constant",
|
|
80
|
+
"--regex-tengo=/^\\s*(.*) := (\"|\\{).*/\\1/c/",
|
|
81
|
+
"-R",
|
|
82
|
+
...tengoFiles
|
|
83
|
+
], {
|
|
84
|
+
env: process.env,
|
|
85
|
+
stdio: "inherit",
|
|
86
|
+
cwd: rootDir
|
|
87
|
+
});
|
|
88
|
+
if (result.error?.message.includes("ENOENT")) {
|
|
89
|
+
console.log(`
|
|
105
90
|
pl-tengo can create tags for tengo autocompletion,
|
|
106
91
|
but the program should be installed
|
|
107
92
|
with "brew install universal-ctags" on OSX
|
|
@@ -109,41 +94,31 @@ or "sudo apt install universal-ctags" on Ubuntu.
|
|
|
109
94
|
|
|
110
95
|
For vscode, you should also install ctags extension:
|
|
111
96
|
https://marketplace.visualstudio.com/items?itemName=jaydenlin.ctags-support`);
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
checkRunError(result, "failed to generate ctags");
|
|
100
|
+
logger.info("Generation of tags is done.");
|
|
116
101
|
}
|
|
117
102
|
function getTengoFiles(dir, depth) {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}
|
|
128
|
-
if (!file.isDirectory() && file.name.endsWith(".tengo")) {
|
|
129
|
-
tengoFiles.push(absPath);
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
return tengoFiles;
|
|
103
|
+
if (depth === 0) return [];
|
|
104
|
+
const files = fs.readdirSync(dir, { withFileTypes: true });
|
|
105
|
+
let tengoFiles = [];
|
|
106
|
+
files.forEach((file) => {
|
|
107
|
+
const absPath = path.join(dir, file.name);
|
|
108
|
+
if (file.isDirectory()) tengoFiles = tengoFiles.concat(getTengoFiles(absPath, depth - 1));
|
|
109
|
+
if (!file.isDirectory() && file.name.endsWith(".tengo")) tengoFiles.push(absPath);
|
|
110
|
+
});
|
|
111
|
+
return tengoFiles;
|
|
133
112
|
}
|
|
134
113
|
function toRelativePath(dir, files) {
|
|
135
|
-
|
|
136
|
-
return files.map((file) => file.replace(dir, "."));
|
|
114
|
+
return files.map((file) => file.replace(dir, "."));
|
|
137
115
|
}
|
|
138
116
|
function checkRunError(result, message) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
const msg = message;
|
|
143
|
-
if (result.status !== 0) {
|
|
144
|
-
console.log(`WARN: ${msg} the build will continue as-is`);
|
|
145
|
-
}
|
|
117
|
+
if (result.error) console.log(result.error);
|
|
118
|
+
const msg = message ?? "failed to run command";
|
|
119
|
+
if (result.status !== 0) console.log(`WARN: ${msg} the build will continue as-is`);
|
|
146
120
|
}
|
|
147
121
|
|
|
122
|
+
//#endregion
|
|
148
123
|
export { Build as default };
|
|
149
|
-
//# sourceMappingURL=build.js.map
|
|
124
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sources":["../../src/commands/build.ts"],"sourcesContent":["import type { SpawnSyncReturns } from \"node:child_process\";\nimport { spawnSync } from \"node:child_process\";\nimport { Command } from \"@oclif/core\";\nimport { compile, savePacks, getPackageInfo } from \"../compiler/main\";\nimport { createLogger } from \"../compiler/util\";\nimport * as opts from \"../shared/basecmd\";\nimport * as fs from \"node:fs\";\nimport * as fsp from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport type * as winston from \"winston\";\nimport type { TemplatesAndLibs } from \"../compiler/compiler\";\n\nexport default class Build extends Command {\n static override description = \"build tengo sources into single distributable pack file\";\n\n static override examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n static override flags = {\n ...opts.GlobalFlags,\n ...opts.CtagsFlags,\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Build);\n const logger = createLogger(flags[\"log-level\"]);\n\n const packageInfo = getPackageInfo(process.cwd(), logger);\n const compiledDist = compile(logger, packageInfo, \"dist\");\n savePacks(logger, compiledDist, \"dist\");\n logger.info(\"Template Pack build done.\");\n\n // Building TS bindings for templates\n const { dts, cjs, mjs } = generateTsBinding(compiledDist);\n await fsp.writeFile(\"dist/index.d.ts\", dts);\n if (packageInfo.type === \"module\") {\n await fsp.writeFile(\"dist/index.cjs\", cjs);\n await fsp.writeFile(\"dist/index.js\", mjs);\n } else {\n await fsp.writeFile(\"dist/index.js\", cjs);\n await fsp.writeFile(\"dist/index.mjs\", mjs);\n }\n\n mergeTagsEnvs(flags);\n if (flags[\"generate-tags\"]) checkAndGenerateCtags(logger, flags);\n\n logger.info(\"Template Pack build done.\");\n }\n}\n\nfunction generateTsBinding(compiledDist: TemplatesAndLibs) {\n let dts = `declare type TemplateFromFile = { readonly type: \"from-file\"; readonly path: string; };\\n`;\n dts += `declare type TplName = ${compiledDist.templates\n .map((tpl) => '\"' + tpl.fullName.id + '\"')\n .join(\" | \")};\\n`;\n dts += `declare const Templates: Record<TplName, TemplateFromFile>;\\n`;\n dts += `export { Templates };\\n`;\n let cjs = `module.exports = { Templates: {\\n`;\n let mjs = `import { resolve } from 'node:path';\\nexport const Templates = {\\n`;\n const recordsCjs = compiledDist.templates\n .map(\n (tpl) =>\n ` '${tpl.fullName.id}': { type: 'from-file', path: require.resolve('./tengo/tpl/${tpl.fullName.id}.plj.gz') }`,\n )\n .join(\",\\n\");\n const recordsMjs = compiledDist.templates\n .map(\n (tpl) =>\n ` '${tpl.fullName.id}': { type: 'from-file', path: resolve(import.meta.dirname, './tengo/tpl/${tpl.fullName.id}.plj.gz') }`,\n )\n .join(\",\\n\");\n cjs += recordsCjs;\n mjs += recordsMjs;\n cjs += `\\n}};\\n`;\n mjs += `\\n};\\n`;\n\n return { dts, cjs, mjs };\n}\n\nfunction mergeTagsEnvs(flags: {\n \"generate-tags\": boolean;\n \"tags-file\": string;\n \"tags-additional-args\": string[] | string;\n}) {\n if (process.env.GENERATE_TAGS != undefined) {\n flags[\"generate-tags\"] = process.env.GENERATE_TAGS == \"true\";\n }\n\n if (process.env.TAGS_FILE != undefined) {\n flags[\"tags-file\"] = process.env.TAGS_FILE;\n }\n\n if (process.env.TAGS_ADDITIONAL_ARGS != undefined) {\n flags[\"tags-additional-args\"] = process.env.TAGS_ADDITIONAL_ARGS.split(\",\");\n }\n}\n\nfunction checkAndGenerateCtags(\n logger: winston.Logger,\n flags: {\n \"tags-file\": string;\n \"tags-additional-args\": string[];\n },\n) {\n const fileName = path.resolve(flags[\"tags-file\"]);\n const rootDir = path.dirname(fileName);\n const additionalArgs = flags[\"tags-additional-args\"];\n\n // all tengo files in dirs and subdirs\n // If we don't limit the depth, it could become unbearably slow\n // and even OOM killed node js.\n // Increase the depth if you need to.\n const tengoFiles = toRelativePath(rootDir, getTengoFiles(rootDir, 9));\n\n logger.info(\n `Generating tags for tengo autocompletion from \"${rootDir}\" \\\nin \"${fileName}\", additional arguments: \"${additionalArgs.join('\" \"')}\".\nFound ${tengoFiles.length} tengo files...`,\n );\n\n // see https://docs.ctags.io/en/latest/man/ctags-optlib.7.html#perl-pod\n const result = spawnSync(\n \"ctags\",\n [\n \"-f\",\n fileName,\n ...additionalArgs,\n \"--langdef=tengo\",\n \"--map-tengo=+.tengo\",\n \"--kinddef-tengo=f,function,function\",\n \"--regex-tengo=/^\\\\s*(.*)(:| :=| =) ?func.*/\\\\1/f/\",\n \"--kinddef-tengo=c,constant,constant\",\n '--regex-tengo=/^\\\\s*(.*) := (\"|\\\\{).*/\\\\1/c/',\n \"-R\",\n ...tengoFiles,\n ],\n {\n env: process.env,\n stdio: \"inherit\",\n cwd: rootDir,\n },\n );\n\n if (result.error?.message.includes(\"ENOENT\")) {\n console.log(`\npl-tengo can create tags for tengo autocompletion,\nbut the program should be installed\nwith \"brew install universal-ctags\" on OSX\nor \"sudo apt install universal-ctags\" on Ubuntu.\n\nFor vscode, you should also install ctags extension:\nhttps://marketplace.visualstudio.com/items?itemName=jaydenlin.ctags-support`);\n\n return;\n }\n\n checkRunError(result, \"failed to generate ctags\");\n\n logger.info(\"Generation of tags is done.\");\n}\n\nfunction getTengoFiles(dir: string, depth: number): string[] {\n if (depth === 0) {\n return [];\n }\n\n const files = fs.readdirSync(dir, { withFileTypes: true });\n\n let tengoFiles: string[] = [];\n files.forEach((file) => {\n const absPath = path.join(dir, file.name);\n\n if (file.isDirectory()) {\n tengoFiles = tengoFiles.concat(getTengoFiles(absPath, depth - 1));\n }\n\n if (!file.isDirectory() && file.name.endsWith(\".tengo\")) {\n tengoFiles.push(absPath);\n }\n });\n\n return tengoFiles;\n}\n\nfunction toRelativePath(dir: string, files: string[]): string[] {\n // Note that VS Code extension likes only relatives paths to the root of the opened dir.\n return files.map((file) => file.replace(dir, \".\"));\n}\n\nfunction checkRunError(result: SpawnSyncReturns<Buffer>, message?: string) {\n if (result.error) {\n console.log(result.error);\n }\n\n const msg = message ?? \"failed to run command\";\n\n if (result.status !== 0) {\n console.log(`WARN: ${msg} the build will continue as-is`);\n }\n}\n"],"names":["opts.GlobalFlags","opts.CtagsFlags"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"build.js","names":["opts.GlobalFlags","opts.CtagsFlags"],"sources":["../../src/commands/build.ts"],"sourcesContent":["import type { SpawnSyncReturns } from \"node:child_process\";\nimport { spawnSync } from \"node:child_process\";\nimport { Command } from \"@oclif/core\";\nimport { compile, savePacks, getPackageInfo } from \"../compiler/main\";\nimport { createLogger } from \"../compiler/util\";\nimport * as opts from \"../shared/basecmd\";\nimport * as fs from \"node:fs\";\nimport * as fsp from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport type * as winston from \"winston\";\nimport type { TemplatesAndLibs } from \"../compiler/compiler\";\n\nexport default class Build extends Command {\n static override description = \"build tengo sources into single distributable pack file\";\n\n static override examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n static override flags = {\n ...opts.GlobalFlags,\n ...opts.CtagsFlags,\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Build);\n const logger = createLogger(flags[\"log-level\"]);\n\n const packageInfo = getPackageInfo(process.cwd(), logger);\n const compiledDist = compile(logger, packageInfo, \"dist\");\n savePacks(logger, compiledDist, \"dist\");\n logger.info(\"Template Pack build done.\");\n\n // Building TS bindings for templates\n const { dts, cjs, mjs } = generateTsBinding(compiledDist);\n await fsp.writeFile(\"dist/index.d.ts\", dts);\n if (packageInfo.type === \"module\") {\n await fsp.writeFile(\"dist/index.cjs\", cjs);\n await fsp.writeFile(\"dist/index.js\", mjs);\n } else {\n await fsp.writeFile(\"dist/index.js\", cjs);\n await fsp.writeFile(\"dist/index.mjs\", mjs);\n }\n\n mergeTagsEnvs(flags);\n if (flags[\"generate-tags\"]) checkAndGenerateCtags(logger, flags);\n\n logger.info(\"Template Pack build done.\");\n }\n}\n\nfunction generateTsBinding(compiledDist: TemplatesAndLibs) {\n let dts = `declare type TemplateFromFile = { readonly type: \"from-file\"; readonly path: string; };\\n`;\n dts += `declare type TplName = ${compiledDist.templates\n .map((tpl) => '\"' + tpl.fullName.id + '\"')\n .join(\" | \")};\\n`;\n dts += `declare const Templates: Record<TplName, TemplateFromFile>;\\n`;\n dts += `export { Templates };\\n`;\n let cjs = `module.exports = { Templates: {\\n`;\n let mjs = `import { resolve } from 'node:path';\\nexport const Templates = {\\n`;\n const recordsCjs = compiledDist.templates\n .map(\n (tpl) =>\n ` '${tpl.fullName.id}': { type: 'from-file', path: require.resolve('./tengo/tpl/${tpl.fullName.id}.plj.gz') }`,\n )\n .join(\",\\n\");\n const recordsMjs = compiledDist.templates\n .map(\n (tpl) =>\n ` '${tpl.fullName.id}': { type: 'from-file', path: resolve(import.meta.dirname, './tengo/tpl/${tpl.fullName.id}.plj.gz') }`,\n )\n .join(\",\\n\");\n cjs += recordsCjs;\n mjs += recordsMjs;\n cjs += `\\n}};\\n`;\n mjs += `\\n};\\n`;\n\n return { dts, cjs, mjs };\n}\n\nfunction mergeTagsEnvs(flags: {\n \"generate-tags\": boolean;\n \"tags-file\": string;\n \"tags-additional-args\": string[] | string;\n}) {\n if (process.env.GENERATE_TAGS != undefined) {\n flags[\"generate-tags\"] = process.env.GENERATE_TAGS == \"true\";\n }\n\n if (process.env.TAGS_FILE != undefined) {\n flags[\"tags-file\"] = process.env.TAGS_FILE;\n }\n\n if (process.env.TAGS_ADDITIONAL_ARGS != undefined) {\n flags[\"tags-additional-args\"] = process.env.TAGS_ADDITIONAL_ARGS.split(\",\");\n }\n}\n\nfunction checkAndGenerateCtags(\n logger: winston.Logger,\n flags: {\n \"tags-file\": string;\n \"tags-additional-args\": string[];\n },\n) {\n const fileName = path.resolve(flags[\"tags-file\"]);\n const rootDir = path.dirname(fileName);\n const additionalArgs = flags[\"tags-additional-args\"];\n\n // all tengo files in dirs and subdirs\n // If we don't limit the depth, it could become unbearably slow\n // and even OOM killed node js.\n // Increase the depth if you need to.\n const tengoFiles = toRelativePath(rootDir, getTengoFiles(rootDir, 9));\n\n logger.info(\n `Generating tags for tengo autocompletion from \"${rootDir}\" \\\nin \"${fileName}\", additional arguments: \"${additionalArgs.join('\" \"')}\".\nFound ${tengoFiles.length} tengo files...`,\n );\n\n // see https://docs.ctags.io/en/latest/man/ctags-optlib.7.html#perl-pod\n const result = spawnSync(\n \"ctags\",\n [\n \"-f\",\n fileName,\n ...additionalArgs,\n \"--langdef=tengo\",\n \"--map-tengo=+.tengo\",\n \"--kinddef-tengo=f,function,function\",\n \"--regex-tengo=/^\\\\s*(.*)(:| :=| =) ?func.*/\\\\1/f/\",\n \"--kinddef-tengo=c,constant,constant\",\n '--regex-tengo=/^\\\\s*(.*) := (\"|\\\\{).*/\\\\1/c/',\n \"-R\",\n ...tengoFiles,\n ],\n {\n env: process.env,\n stdio: \"inherit\",\n cwd: rootDir,\n },\n );\n\n if (result.error?.message.includes(\"ENOENT\")) {\n console.log(`\npl-tengo can create tags for tengo autocompletion,\nbut the program should be installed\nwith \"brew install universal-ctags\" on OSX\nor \"sudo apt install universal-ctags\" on Ubuntu.\n\nFor vscode, you should also install ctags extension:\nhttps://marketplace.visualstudio.com/items?itemName=jaydenlin.ctags-support`);\n\n return;\n }\n\n checkRunError(result, \"failed to generate ctags\");\n\n logger.info(\"Generation of tags is done.\");\n}\n\nfunction getTengoFiles(dir: string, depth: number): string[] {\n if (depth === 0) {\n return [];\n }\n\n const files = fs.readdirSync(dir, { withFileTypes: true });\n\n let tengoFiles: string[] = [];\n files.forEach((file) => {\n const absPath = path.join(dir, file.name);\n\n if (file.isDirectory()) {\n tengoFiles = tengoFiles.concat(getTengoFiles(absPath, depth - 1));\n }\n\n if (!file.isDirectory() && file.name.endsWith(\".tengo\")) {\n tengoFiles.push(absPath);\n }\n });\n\n return tengoFiles;\n}\n\nfunction toRelativePath(dir: string, files: string[]): string[] {\n // Note that VS Code extension likes only relatives paths to the root of the opened dir.\n return files.map((file) => file.replace(dir, \".\"));\n}\n\nfunction checkRunError(result: SpawnSyncReturns<Buffer>, message?: string) {\n if (result.error) {\n console.log(result.error);\n }\n\n const msg = message ?? \"failed to run command\";\n\n if (result.status !== 0) {\n console.log(`WARN: ${msg} the build will continue as-is`);\n }\n}\n"],"mappings":"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"}
|
package/dist/commands/check.cjs
CHANGED
|
@@ -1,38 +1,34 @@
|
|
|
1
|
-
|
|
1
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
const require_util = require('../compiler/util.cjs');
|
|
3
|
+
const require_basecmd = require('../shared/basecmd.cjs');
|
|
4
|
+
const require_dump = require('../shared/dump.cjs');
|
|
5
|
+
const require_proc = require('../shared/proc.cjs');
|
|
6
|
+
let _oclif_core = require("@oclif/core");
|
|
7
|
+
let _milaboratories_tengo_tester = require("@milaboratories/tengo-tester");
|
|
2
8
|
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
//#region src/commands/check.ts
|
|
10
|
+
var Check = class Check extends _oclif_core.Command {
|
|
11
|
+
static description = "check tengo sources for language processor an";
|
|
12
|
+
static strict = false;
|
|
13
|
+
static flags = { ...require_basecmd.GlobalFlags };
|
|
14
|
+
static examples = ["<%= config.bin %> <%= command.id %>"];
|
|
15
|
+
async run() {
|
|
16
|
+
const { flags, argv } = await this.parse(Check);
|
|
17
|
+
const logger = require_util.createLogger(flags["log-level"]);
|
|
18
|
+
const testerArgs = argv.length == 0 ? ["./src"] : argv;
|
|
19
|
+
const tester = require_proc.spawnEmbed(_milaboratories_tengo_tester.TengoTesterBinaryPath, "check", "--log-level", flags["log-level"], "--artifacts", "-", ...testerArgs);
|
|
20
|
+
try {
|
|
21
|
+
require_dump.dumpArtifacts(logger, tester.stdin);
|
|
22
|
+
} catch (err) {
|
|
23
|
+
logger.error(err);
|
|
24
|
+
} finally {
|
|
25
|
+
tester.stdin.end();
|
|
26
|
+
const code = await require_proc.waitFor(tester);
|
|
27
|
+
process.exit(code);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
9
31
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// "log-level": Args.string({description: 'logging level'}),
|
|
14
|
-
// }
|
|
15
|
-
static strict = false;
|
|
16
|
-
static flags = { ...basecmd.GlobalFlags };
|
|
17
|
-
static examples = ["<%= config.bin %> <%= command.id %>"];
|
|
18
|
-
async run() {
|
|
19
|
-
const { flags, argv } = await this.parse(Check);
|
|
20
|
-
const logger = util.createLogger(flags["log-level"]);
|
|
21
|
-
const testerArgs = argv.length == 0 ? ["./src"] : argv;
|
|
22
|
-
const tester = proc.spawnEmbed(tengoTester.TengoTesterBinaryPath, "check", "--log-level", flags["log-level"], "--artifacts", "-", ...testerArgs);
|
|
23
|
-
try {
|
|
24
|
-
dump.dumpArtifacts(logger, tester.stdin);
|
|
25
|
-
}
|
|
26
|
-
catch (err) {
|
|
27
|
-
logger.error(err);
|
|
28
|
-
}
|
|
29
|
-
finally {
|
|
30
|
-
tester.stdin.end();
|
|
31
|
-
const code = await proc.waitFor(tester);
|
|
32
|
-
process.exit(code);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
module.exports = Check;
|
|
38
|
-
//# sourceMappingURL=check.cjs.map
|
|
32
|
+
//#endregion
|
|
33
|
+
exports.default = Check;
|
|
34
|
+
//# sourceMappingURL=check.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.cjs","sources":["../../src/commands/check.ts"],"sourcesContent":["import { Command } from \"@oclif/core\";\nimport { createLogger } from \"../compiler/util\";\nimport { dumpArtifacts } from \"../shared/dump\";\nimport { GlobalFlags } from \"../shared/basecmd\";\nimport { spawnEmbed, waitFor } from \"../shared/proc\";\nimport { TengoTesterBinaryPath } from \"@milaboratories/tengo-tester\";\n\nexport default class Check extends Command {\n static override description = \"check tengo sources for language processor an\";\n\n // static override args = {\n // \"log-level\": Args.string({description: 'logging level'}),\n // }\n\n static strict = false;\n\n static override flags = { ...GlobalFlags };\n\n static override examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n public async run(): Promise<void> {\n const { flags, argv } = await this.parse(Check);\n const logger = createLogger(flags[\"log-level\"]);\n\n const testerArgs: string[] = argv.length == 0 ? [\"./src\"] : (argv as string[]);\n\n const tester = spawnEmbed(\n TengoTesterBinaryPath,\n \"check\",\n \"--log-level\",\n flags[\"log-level\"],\n \"--artifacts\",\n \"-\",\n ...testerArgs,\n );\n\n try {\n dumpArtifacts(logger, tester.stdin);\n } catch (err: unknown) {\n logger.error(err);\n } finally {\n tester.stdin.end();\n const code = await waitFor(tester);\n process.exit(code);\n }\n }\n}\n"],"
|
|
1
|
+
{"version":3,"file":"check.cjs","names":["Command","GlobalFlags","createLogger","spawnEmbed","TengoTesterBinaryPath","waitFor"],"sources":["../../src/commands/check.ts"],"sourcesContent":["import { Command } from \"@oclif/core\";\nimport { createLogger } from \"../compiler/util\";\nimport { dumpArtifacts } from \"../shared/dump\";\nimport { GlobalFlags } from \"../shared/basecmd\";\nimport { spawnEmbed, waitFor } from \"../shared/proc\";\nimport { TengoTesterBinaryPath } from \"@milaboratories/tengo-tester\";\n\nexport default class Check extends Command {\n static override description = \"check tengo sources for language processor an\";\n\n // static override args = {\n // \"log-level\": Args.string({description: 'logging level'}),\n // }\n\n static strict = false;\n\n static override flags = { ...GlobalFlags };\n\n static override examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n public async run(): Promise<void> {\n const { flags, argv } = await this.parse(Check);\n const logger = createLogger(flags[\"log-level\"]);\n\n const testerArgs: string[] = argv.length == 0 ? [\"./src\"] : (argv as string[]);\n\n const tester = spawnEmbed(\n TengoTesterBinaryPath,\n \"check\",\n \"--log-level\",\n flags[\"log-level\"],\n \"--artifacts\",\n \"-\",\n ...testerArgs,\n );\n\n try {\n dumpArtifacts(logger, tester.stdin);\n } catch (err: unknown) {\n logger.error(err);\n } finally {\n tester.stdin.end();\n const code = await waitFor(tester);\n process.exit(code);\n }\n }\n}\n"],"mappings":";;;;;;;;;AAOA,IAAqB,QAArB,MAAqB,cAAcA,oBAAQ;CACzC,OAAgB,cAAc;CAM9B,OAAO,SAAS;CAEhB,OAAgB,QAAQ,EAAE,GAAGC,6BAAa;CAE1C,OAAgB,WAAW,CAAC,sCAAsC;CAElE,MAAa,MAAqB;EAChC,MAAM,EAAE,OAAO,SAAS,MAAM,KAAK,MAAM,MAAM;EAC/C,MAAM,SAASC,0BAAa,MAAM,aAAa;EAE/C,MAAM,aAAuB,KAAK,UAAU,IAAI,CAAC,QAAQ,GAAI;EAE7D,MAAM,SAASC,wBACbC,oDACA,SACA,eACA,MAAM,cACN,eACA,KACA,GAAG,WACJ;AAED,MAAI;AACF,8BAAc,QAAQ,OAAO,MAAM;WAC5B,KAAc;AACrB,UAAO,MAAM,IAAI;YACT;AACR,UAAO,MAAM,KAAK;GAClB,MAAM,OAAO,MAAMC,qBAAQ,OAAO;AAClC,WAAQ,KAAK,KAAK"}
|
package/dist/commands/check.d.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { Command } from "@oclif/core";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
import * as _oclif_core_interfaces0 from "@oclif/core/interfaces";
|
|
3
|
+
|
|
4
|
+
//#region src/commands/check.d.ts
|
|
5
|
+
declare class Check extends Command {
|
|
6
|
+
static description: string;
|
|
7
|
+
static strict: boolean;
|
|
8
|
+
static flags: {
|
|
9
|
+
"log-level": _oclif_core_interfaces0.OptionFlag<string, _oclif_core_interfaces0.CustomOptions>;
|
|
10
|
+
};
|
|
11
|
+
static examples: string[];
|
|
12
|
+
run(): Promise<void>;
|
|
10
13
|
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { Check };
|
|
11
16
|
//# sourceMappingURL=check.d.ts.map
|
package/dist/commands/check.js
CHANGED
|
@@ -1,36 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { dumpArtifacts } from
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { TengoTesterBinaryPath } from
|
|
1
|
+
import { createLogger } from "../compiler/util.js";
|
|
2
|
+
import { GlobalFlags } from "../shared/basecmd.js";
|
|
3
|
+
import { dumpArtifacts } from "../shared/dump.js";
|
|
4
|
+
import { spawnEmbed, waitFor } from "../shared/proc.js";
|
|
5
|
+
import { Command } from "@oclif/core";
|
|
6
|
+
import { TengoTesterBinaryPath } from "@milaboratories/tengo-tester";
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
process.exit(code);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
8
|
+
//#region src/commands/check.ts
|
|
9
|
+
var Check = class Check extends Command {
|
|
10
|
+
static description = "check tengo sources for language processor an";
|
|
11
|
+
static strict = false;
|
|
12
|
+
static flags = { ...GlobalFlags };
|
|
13
|
+
static examples = ["<%= config.bin %> <%= command.id %>"];
|
|
14
|
+
async run() {
|
|
15
|
+
const { flags, argv } = await this.parse(Check);
|
|
16
|
+
const logger = createLogger(flags["log-level"]);
|
|
17
|
+
const testerArgs = argv.length == 0 ? ["./src"] : argv;
|
|
18
|
+
const tester = spawnEmbed(TengoTesterBinaryPath, "check", "--log-level", flags["log-level"], "--artifacts", "-", ...testerArgs);
|
|
19
|
+
try {
|
|
20
|
+
dumpArtifacts(logger, tester.stdin);
|
|
21
|
+
} catch (err) {
|
|
22
|
+
logger.error(err);
|
|
23
|
+
} finally {
|
|
24
|
+
tester.stdin.end();
|
|
25
|
+
const code = await waitFor(tester);
|
|
26
|
+
process.exit(code);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
};
|
|
34
30
|
|
|
31
|
+
//#endregion
|
|
35
32
|
export { Check as default };
|
|
36
|
-
//# sourceMappingURL=check.js.map
|
|
33
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sources":["../../src/commands/check.ts"],"sourcesContent":["import { Command } from \"@oclif/core\";\nimport { createLogger } from \"../compiler/util\";\nimport { dumpArtifacts } from \"../shared/dump\";\nimport { GlobalFlags } from \"../shared/basecmd\";\nimport { spawnEmbed, waitFor } from \"../shared/proc\";\nimport { TengoTesterBinaryPath } from \"@milaboratories/tengo-tester\";\n\nexport default class Check extends Command {\n static override description = \"check tengo sources for language processor an\";\n\n // static override args = {\n // \"log-level\": Args.string({description: 'logging level'}),\n // }\n\n static strict = false;\n\n static override flags = { ...GlobalFlags };\n\n static override examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n public async run(): Promise<void> {\n const { flags, argv } = await this.parse(Check);\n const logger = createLogger(flags[\"log-level\"]);\n\n const testerArgs: string[] = argv.length == 0 ? [\"./src\"] : (argv as string[]);\n\n const tester = spawnEmbed(\n TengoTesterBinaryPath,\n \"check\",\n \"--log-level\",\n flags[\"log-level\"],\n \"--artifacts\",\n \"-\",\n ...testerArgs,\n );\n\n try {\n dumpArtifacts(logger, tester.stdin);\n } catch (err: unknown) {\n logger.error(err);\n } finally {\n tester.stdin.end();\n const code = await waitFor(tester);\n process.exit(code);\n }\n }\n}\n"],"
|
|
1
|
+
{"version":3,"file":"check.js","names":[],"sources":["../../src/commands/check.ts"],"sourcesContent":["import { Command } from \"@oclif/core\";\nimport { createLogger } from \"../compiler/util\";\nimport { dumpArtifacts } from \"../shared/dump\";\nimport { GlobalFlags } from \"../shared/basecmd\";\nimport { spawnEmbed, waitFor } from \"../shared/proc\";\nimport { TengoTesterBinaryPath } from \"@milaboratories/tengo-tester\";\n\nexport default class Check extends Command {\n static override description = \"check tengo sources for language processor an\";\n\n // static override args = {\n // \"log-level\": Args.string({description: 'logging level'}),\n // }\n\n static strict = false;\n\n static override flags = { ...GlobalFlags };\n\n static override examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n public async run(): Promise<void> {\n const { flags, argv } = await this.parse(Check);\n const logger = createLogger(flags[\"log-level\"]);\n\n const testerArgs: string[] = argv.length == 0 ? [\"./src\"] : (argv as string[]);\n\n const tester = spawnEmbed(\n TengoTesterBinaryPath,\n \"check\",\n \"--log-level\",\n flags[\"log-level\"],\n \"--artifacts\",\n \"-\",\n ...testerArgs,\n );\n\n try {\n dumpArtifacts(logger, tester.stdin);\n } catch (err: unknown) {\n logger.error(err);\n } finally {\n tester.stdin.end();\n const code = await waitFor(tester);\n process.exit(code);\n }\n }\n}\n"],"mappings":";;;;;;;;AAOA,IAAqB,QAArB,MAAqB,cAAc,QAAQ;CACzC,OAAgB,cAAc;CAM9B,OAAO,SAAS;CAEhB,OAAgB,QAAQ,EAAE,GAAG,aAAa;CAE1C,OAAgB,WAAW,CAAC,sCAAsC;CAElE,MAAa,MAAqB;EAChC,MAAM,EAAE,OAAO,SAAS,MAAM,KAAK,MAAM,MAAM;EAC/C,MAAM,SAAS,aAAa,MAAM,aAAa;EAE/C,MAAM,aAAuB,KAAK,UAAU,IAAI,CAAC,QAAQ,GAAI;EAE7D,MAAM,SAAS,WACb,uBACA,SACA,eACA,MAAM,cACN,eACA,KACA,GAAG,WACJ;AAED,MAAI;AACF,iBAAc,QAAQ,OAAO,MAAM;WAC5B,KAAc;AACrB,UAAO,MAAM,IAAI;YACT;AACR,UAAO,MAAM,KAAK;GAClB,MAAM,OAAO,MAAM,QAAQ,OAAO;AAClC,WAAQ,KAAK,KAAK"}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
|
|
1
|
+
const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
const require_util = require('../../compiler/util.cjs');
|
|
3
|
+
const require_basecmd = require('../../shared/basecmd.cjs');
|
|
4
|
+
const require_dump = require('../../shared/dump.cjs');
|
|
5
|
+
let _oclif_core = require("@oclif/core");
|
|
6
|
+
let node_process = require("node:process");
|
|
2
7
|
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
//#region src/commands/dump/artifacts.ts
|
|
9
|
+
var DumpArtifacts = class DumpArtifacts extends _oclif_core.Command {
|
|
10
|
+
static description = "parse sources in current package and dump all found artifacts to stdout";
|
|
11
|
+
static examples = ["<%= config.bin %> <%= command.id %>"];
|
|
12
|
+
static flags = {
|
|
13
|
+
...require_basecmd.GlobalFlags,
|
|
14
|
+
...require_basecmd.ArtifactTypeFlag
|
|
15
|
+
};
|
|
16
|
+
async run() {
|
|
17
|
+
const { flags } = await this.parse(DumpArtifacts);
|
|
18
|
+
require_dump.dumpArtifacts(require_util.createLogger(flags["log-level"]), node_process.stdout, flags.type == "all" ? void 0 : flags.type);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
8
21
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
static flags = {
|
|
13
|
-
...basecmd.GlobalFlags,
|
|
14
|
-
...basecmd.ArtifactTypeFlag,
|
|
15
|
-
};
|
|
16
|
-
async run() {
|
|
17
|
-
const { flags } = await this.parse(DumpArtifacts);
|
|
18
|
-
const logger = util.createLogger(flags["log-level"]);
|
|
19
|
-
dump.dumpArtifacts(logger, node_process.stdout, flags.type == "all" ? undefined : flags.type);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
module.exports = DumpArtifacts;
|
|
24
|
-
//# sourceMappingURL=artifacts.cjs.map
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.default = DumpArtifacts;
|
|
24
|
+
//# sourceMappingURL=artifacts.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.cjs","sources":["../../../src/commands/dump/artifacts.ts"],"sourcesContent":["import { Command } from \"@oclif/core\";\nimport { createLogger } from \"../../compiler/util\";\nimport { dumpArtifacts } from \"../../shared/dump\";\nimport { stdout } from \"node:process\";\nimport type { ArtifactType } from \"../../compiler/package\";\nimport * as opts from \"../../shared/basecmd\";\n\nexport default class DumpArtifacts extends Command {\n static override description =\n \"parse sources in current package and dump all found artifacts to stdout\";\n\n static override examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n static override flags = {\n ...opts.GlobalFlags,\n ...opts.ArtifactTypeFlag,\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(DumpArtifacts);\n const logger = createLogger(flags[\"log-level\"]);\n dumpArtifacts(logger, stdout, flags.type == \"all\" ? undefined : (flags.type as ArtifactType));\n }\n}\n"],"
|
|
1
|
+
{"version":3,"file":"artifacts.cjs","names":["Command","createLogger","stdout"],"sources":["../../../src/commands/dump/artifacts.ts"],"sourcesContent":["import { Command } from \"@oclif/core\";\nimport { createLogger } from \"../../compiler/util\";\nimport { dumpArtifacts } from \"../../shared/dump\";\nimport { stdout } from \"node:process\";\nimport type { ArtifactType } from \"../../compiler/package\";\nimport * as opts from \"../../shared/basecmd\";\n\nexport default class DumpArtifacts extends Command {\n static override description =\n \"parse sources in current package and dump all found artifacts to stdout\";\n\n static override examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n static override flags = {\n ...opts.GlobalFlags,\n ...opts.ArtifactTypeFlag,\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(DumpArtifacts);\n const logger = createLogger(flags[\"log-level\"]);\n dumpArtifacts(logger, stdout, flags.type == \"all\" ? undefined : (flags.type as ArtifactType));\n }\n}\n"],"mappings":";;;;;;;;AAOA,IAAqB,gBAArB,MAAqB,sBAAsBA,oBAAQ;CACjD,OAAgB,cACd;CAEF,OAAgB,WAAW,CAAC,sCAAsC;CAElE,OAAgB,QAAQ;EACtB;EACA;EACD;CAED,MAAa,MAAqB;EAChC,MAAM,EAAE,UAAU,MAAM,KAAK,MAAM,cAAc;AAEjD,6BADeC,0BAAa,MAAM,aAAa,EACzBC,qBAAQ,MAAM,QAAQ,QAAQ,SAAa,MAAM,KAAsB"}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { Command } from "@oclif/core";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
import * as _oclif_core_interfaces0 from "@oclif/core/interfaces";
|
|
3
|
+
|
|
4
|
+
//#region src/commands/dump/artifacts.d.ts
|
|
5
|
+
declare class DumpArtifacts extends Command {
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
type: _oclif_core_interfaces0.OptionFlag<string, _oclif_core_interfaces0.CustomOptions>;
|
|
10
|
+
"log-level": _oclif_core_interfaces0.OptionFlag<string, _oclif_core_interfaces0.CustomOptions>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
10
13
|
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { DumpArtifacts };
|
|
11
16
|
//# sourceMappingURL=artifacts.d.ts.map
|