@platforma-sdk/tengo-builder 4.0.9 → 4.0.10
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/bin/run.js +5 -10
- package/dist/cli.cjs +28 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +26 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/build.cjs +15 -13
- package/dist/commands/build.cjs.map +1 -1
- package/dist/commands/build.js +16 -14
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/check.cjs +13 -14
- package/dist/commands/check.cjs.map +1 -1
- package/dist/commands/check.js +14 -15
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/dump/artifacts.cjs +10 -14
- package/dist/commands/dump/artifacts.cjs.map +1 -1
- package/dist/commands/dump/artifacts.js +11 -15
- package/dist/commands/dump/artifacts.js.map +1 -1
- package/dist/commands/dump/software.cjs +10 -11
- package/dist/commands/dump/software.cjs.map +1 -1
- package/dist/commands/dump/software.js +11 -12
- package/dist/commands/dump/software.js.map +1 -1
- package/dist/commands/test.cjs +13 -14
- package/dist/commands/test.cjs.map +1 -1
- package/dist/commands/test.js +14 -15
- package/dist/commands/test.js.map +1 -1
- package/dist/index.cjs +3 -17
- package/dist/index.d.ts +2 -17
- package/dist/index.js +2 -17
- package/dist/shared/basecmd.cjs +33 -44
- package/dist/shared/basecmd.cjs.map +1 -1
- package/dist/shared/basecmd.js +30 -42
- package/dist/shared/basecmd.js.map +1 -1
- package/package.json +7 -18
- package/src/cli.ts +27 -0
- package/src/commands/build.ts +16 -12
- package/src/commands/check.ts +14 -19
- package/src/commands/dump/artifacts.ts +11 -14
- package/src/commands/dump/software.ts +11 -13
- package/src/commands/test.ts +14 -15
- package/src/index.ts +1 -15
- package/src/shared/basecmd.ts +36 -32
- package/dist/commands/build.d.ts +0 -18
- package/dist/commands/build.d.ts.map +0 -1
- package/dist/commands/check.d.ts +0 -16
- package/dist/commands/check.d.ts.map +0 -1
- package/dist/commands/dump/artifacts.d.ts +0 -16
- package/dist/commands/dump/artifacts.d.ts.map +0 -1
- package/dist/commands/dump/software.d.ts +0 -15
- package/dist/commands/dump/software.d.ts.map +0 -1
- package/dist/commands/test.d.ts +0 -16
- package/dist/commands/test.d.ts.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
package/bin/run.js
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { run } from "../dist/index.js";
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
(async () => {
|
|
11
|
-
const oclif = await import("@oclif/core");
|
|
12
|
-
await oclif.execute({ dir: __dirname });
|
|
13
|
-
})();
|
|
5
|
+
run(process.argv).catch((error) => {
|
|
6
|
+
console.error(`error: ${error?.message ?? error}`);
|
|
7
|
+
process.exitCode = 1;
|
|
8
|
+
});
|
package/dist/cli.cjs
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require("./_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_build = require("./commands/build.cjs");
|
|
3
|
+
const require_check = require("./commands/check.cjs");
|
|
4
|
+
const require_test = require("./commands/test.cjs");
|
|
5
|
+
const require_artifacts = require("./commands/dump/artifacts.cjs");
|
|
6
|
+
const require_software = require("./commands/dump/software.cjs");
|
|
7
|
+
let commander = require("commander");
|
|
8
|
+
//#region src/cli.ts
|
|
9
|
+
function buildProgram() {
|
|
10
|
+
const program = new commander.Command();
|
|
11
|
+
program.name("pl-tengo").description("Pl Tengo Template Builder");
|
|
12
|
+
program.addCommand(require_build.default());
|
|
13
|
+
program.addCommand(require_check.default());
|
|
14
|
+
program.addCommand(require_test.default());
|
|
15
|
+
const dump = new commander.Command("dump").description("dump parsed artifacts or software descriptors");
|
|
16
|
+
dump.addCommand(require_artifacts.default());
|
|
17
|
+
dump.addCommand(require_software.default());
|
|
18
|
+
program.addCommand(dump);
|
|
19
|
+
return program;
|
|
20
|
+
}
|
|
21
|
+
async function run(argv = process.argv) {
|
|
22
|
+
await buildProgram().parseAsync(argv);
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
exports.buildProgram = buildProgram;
|
|
26
|
+
exports.run = run;
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=cli.cjs.map
|
package/dist/cli.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.cjs","names":["Command","buildCommand","checkCommand","testCommand","dumpArtifactsCommand","dumpSoftwareCommand"],"sources":["../src/cli.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport buildCommand from \"./commands/build\";\nimport checkCommand from \"./commands/check\";\nimport testCommand from \"./commands/test\";\nimport dumpArtifactsCommand from \"./commands/dump/artifacts\";\nimport dumpSoftwareCommand from \"./commands/dump/software\";\n\nexport function buildProgram(): Command {\n const program = new Command();\n program.name(\"pl-tengo\").description(\"Pl Tengo Template Builder\");\n\n program.addCommand(buildCommand());\n program.addCommand(checkCommand());\n program.addCommand(testCommand());\n\n // `dump` is a pure topic (no action): `pl-tengo dump` prints help.\n const dump = new Command(\"dump\").description(\"dump parsed artifacts or software descriptors\");\n dump.addCommand(dumpArtifactsCommand());\n dump.addCommand(dumpSoftwareCommand());\n program.addCommand(dump);\n\n return program;\n}\n\nexport async function run(argv: string[] = process.argv): Promise<void> {\n await buildProgram().parseAsync(argv);\n}\n"],"mappings":";;;;;;;;AAOA,SAAgB,eAAwB;CACtC,MAAM,UAAU,IAAIA,UAAAA,SAAS;AAC7B,SAAQ,KAAK,WAAW,CAAC,YAAY,4BAA4B;AAEjE,SAAQ,WAAWC,cAAAA,SAAc,CAAC;AAClC,SAAQ,WAAWC,cAAAA,SAAc,CAAC;AAClC,SAAQ,WAAWC,aAAAA,SAAa,CAAC;CAGjC,MAAM,OAAO,IAAIH,UAAAA,QAAQ,OAAO,CAAC,YAAY,gDAAgD;AAC7F,MAAK,WAAWI,kBAAAA,SAAsB,CAAC;AACvC,MAAK,WAAWC,iBAAAA,SAAqB,CAAC;AACtC,SAAQ,WAAW,KAAK;AAExB,QAAO;;AAGT,eAAsB,IAAI,OAAiB,QAAQ,MAAqB;AACtE,OAAM,cAAc,CAAC,WAAW,KAAK"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","names":[],"sources":["../src/cli.ts"],"mappings":";;;iBAOgB,YAAA,CAAA,GAAgB,OAAA;AAAA,iBAiBV,GAAA,CAAI,IAAA,cAAgC,OAAA"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import buildCommand from "./commands/build.js";
|
|
2
|
+
import checkCommand from "./commands/check.js";
|
|
3
|
+
import testCommand from "./commands/test.js";
|
|
4
|
+
import dumpArtifactsCommand from "./commands/dump/artifacts.js";
|
|
5
|
+
import dumpSoftwareCommand from "./commands/dump/software.js";
|
|
6
|
+
import { Command } from "commander";
|
|
7
|
+
//#region src/cli.ts
|
|
8
|
+
function buildProgram() {
|
|
9
|
+
const program = new Command();
|
|
10
|
+
program.name("pl-tengo").description("Pl Tengo Template Builder");
|
|
11
|
+
program.addCommand(buildCommand());
|
|
12
|
+
program.addCommand(checkCommand());
|
|
13
|
+
program.addCommand(testCommand());
|
|
14
|
+
const dump = new Command("dump").description("dump parsed artifacts or software descriptors");
|
|
15
|
+
dump.addCommand(dumpArtifactsCommand());
|
|
16
|
+
dump.addCommand(dumpSoftwareCommand());
|
|
17
|
+
program.addCommand(dump);
|
|
18
|
+
return program;
|
|
19
|
+
}
|
|
20
|
+
async function run(argv = process.argv) {
|
|
21
|
+
await buildProgram().parseAsync(argv);
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { buildProgram, run };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","names":[],"sources":["../src/cli.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport buildCommand from \"./commands/build\";\nimport checkCommand from \"./commands/check\";\nimport testCommand from \"./commands/test\";\nimport dumpArtifactsCommand from \"./commands/dump/artifacts\";\nimport dumpSoftwareCommand from \"./commands/dump/software\";\n\nexport function buildProgram(): Command {\n const program = new Command();\n program.name(\"pl-tengo\").description(\"Pl Tengo Template Builder\");\n\n program.addCommand(buildCommand());\n program.addCommand(checkCommand());\n program.addCommand(testCommand());\n\n // `dump` is a pure topic (no action): `pl-tengo dump` prints help.\n const dump = new Command(\"dump\").description(\"dump parsed artifacts or software descriptors\");\n dump.addCommand(dumpArtifactsCommand());\n dump.addCommand(dumpSoftwareCommand());\n program.addCommand(dump);\n\n return program;\n}\n\nexport async function run(argv: string[] = process.argv): Promise<void> {\n await buildProgram().parseAsync(argv);\n}\n"],"mappings":";;;;;;;AAOA,SAAgB,eAAwB;CACtC,MAAM,UAAU,IAAI,SAAS;AAC7B,SAAQ,KAAK,WAAW,CAAC,YAAY,4BAA4B;AAEjE,SAAQ,WAAW,cAAc,CAAC;AAClC,SAAQ,WAAW,cAAc,CAAC;AAClC,SAAQ,WAAW,aAAa,CAAC;CAGjC,MAAM,OAAO,IAAI,QAAQ,OAAO,CAAC,YAAY,gDAAgD;AAC7F,MAAK,WAAW,sBAAsB,CAAC;AACvC,MAAK,WAAW,qBAAqB,CAAC;AACtC,SAAQ,WAAW,KAAK;AAExB,QAAO;;AAGT,eAAsB,IAAI,OAAiB,QAAQ,MAAqB;AACtE,OAAM,cAAc,CAAC,WAAW,KAAK"}
|
package/dist/commands/build.cjs
CHANGED
|
@@ -2,8 +2,8 @@ const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
|
2
2
|
const require_util = require("../compiler/util.cjs");
|
|
3
3
|
const require_main = require("../compiler/main.cjs");
|
|
4
4
|
const require_basecmd = require("../shared/basecmd.cjs");
|
|
5
|
+
let commander = require("commander");
|
|
5
6
|
let node_child_process = require("node:child_process");
|
|
6
|
-
let _oclif_core = require("@oclif/core");
|
|
7
7
|
let node_path = require("node:path");
|
|
8
8
|
node_path = require_runtime.__toESM(node_path);
|
|
9
9
|
let node_fs = require("node:fs");
|
|
@@ -11,15 +11,16 @@ node_fs = require_runtime.__toESM(node_fs);
|
|
|
11
11
|
let node_fs_promises = require("node:fs/promises");
|
|
12
12
|
node_fs_promises = require_runtime.__toESM(node_fs_promises);
|
|
13
13
|
//#region src/commands/build.ts
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
14
|
+
function buildCommand() {
|
|
15
|
+
const cmd = new commander.Command("build").description("build tengo sources into single distributable pack file");
|
|
16
|
+
require_basecmd.addOptions(cmd, require_basecmd.GlobalOptions(), require_basecmd.CtagsOptions());
|
|
17
|
+
cmd.action(async (o) => {
|
|
18
|
+
const flags = {
|
|
19
|
+
"log-level": o.logLevel,
|
|
20
|
+
"generate-tags": o.generateTags,
|
|
21
|
+
"tags-file": o.tagsFile,
|
|
22
|
+
"tags-additional-args": o.tagsAdditionalArgs
|
|
23
|
+
};
|
|
23
24
|
const logger = require_util.createLogger(flags["log-level"]);
|
|
24
25
|
const packageInfo = require_main.getPackageInfo(process.cwd(), logger);
|
|
25
26
|
const compiledDist = require_main.compile(logger, packageInfo, "dist");
|
|
@@ -37,8 +38,9 @@ var Build = class Build extends _oclif_core.Command {
|
|
|
37
38
|
mergeTagsEnvs(flags);
|
|
38
39
|
if (flags["generate-tags"]) checkAndGenerateCtags(logger, flags);
|
|
39
40
|
logger.info("Template Pack build done.");
|
|
40
|
-
}
|
|
41
|
-
|
|
41
|
+
});
|
|
42
|
+
return cmd;
|
|
43
|
+
}
|
|
42
44
|
function generateTsBinding(compiledDist) {
|
|
43
45
|
let dts = `declare type TemplateFromFile = { readonly type: "from-file"; readonly path: string; };\n`;
|
|
44
46
|
dts += `declare type TplName = ${compiledDist.templates.map((tpl) => "\"" + tpl.fullName.id + "\"").join(" | ")};\n`;
|
|
@@ -122,6 +124,6 @@ function checkRunError(result, message) {
|
|
|
122
124
|
if (result.status !== 0) console.log(`WARN: ${msg} the build will continue as-is`);
|
|
123
125
|
}
|
|
124
126
|
//#endregion
|
|
125
|
-
exports.default =
|
|
127
|
+
exports.default = buildCommand;
|
|
126
128
|
|
|
127
129
|
//# sourceMappingURL=build.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.cjs","names":["Command","createLogger","getPackageInfo","compile","fsp","path","fs"],"sources":["../../src/commands/build.ts"],"sourcesContent":["import type { SpawnSyncReturns } from \"node:child_process\";\nimport { spawnSync } from \"node:child_process\";\nimport { Command } from \"
|
|
1
|
+
{"version":3,"file":"build.cjs","names":["Command","createLogger","getPackageInfo","compile","fsp","path","fs"],"sources":["../../src/commands/build.ts"],"sourcesContent":["import type { SpawnSyncReturns } from \"node:child_process\";\nimport { spawnSync } from \"node:child_process\";\nimport { Command } from \"commander\";\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 function buildCommand(): Command {\n const cmd = new Command(\"build\").description(\n \"build tengo sources into single distributable pack file\",\n );\n\n opts.addOptions(cmd, opts.GlobalOptions(), opts.CtagsOptions());\n\n cmd.action(async (o) => {\n const flags = {\n \"log-level\": o.logLevel as string,\n \"generate-tags\": o.generateTags as boolean,\n \"tags-file\": o.tagsFile as string,\n \"tags-additional-args\": o.tagsAdditionalArgs as string[],\n };\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 return cmd;\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/build.js
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { createLogger } from "../compiler/util.js";
|
|
2
2
|
import { compile, getPackageInfo, savePacks } from "../compiler/main.js";
|
|
3
|
-
import {
|
|
3
|
+
import { CtagsOptions, GlobalOptions, addOptions } from "../shared/basecmd.js";
|
|
4
|
+
import { Command } from "commander";
|
|
4
5
|
import { spawnSync } from "node:child_process";
|
|
5
|
-
import { Command } from "@oclif/core";
|
|
6
6
|
import * as path from "node:path";
|
|
7
7
|
import * as fs from "node:fs";
|
|
8
8
|
import * as fsp from "node:fs/promises";
|
|
9
9
|
//#region src/commands/build.ts
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
function buildCommand() {
|
|
11
|
+
const cmd = new Command("build").description("build tengo sources into single distributable pack file");
|
|
12
|
+
addOptions(cmd, GlobalOptions(), CtagsOptions());
|
|
13
|
+
cmd.action(async (o) => {
|
|
14
|
+
const flags = {
|
|
15
|
+
"log-level": o.logLevel,
|
|
16
|
+
"generate-tags": o.generateTags,
|
|
17
|
+
"tags-file": o.tagsFile,
|
|
18
|
+
"tags-additional-args": o.tagsAdditionalArgs
|
|
19
|
+
};
|
|
19
20
|
const logger = createLogger(flags["log-level"]);
|
|
20
21
|
const packageInfo = getPackageInfo(process.cwd(), logger);
|
|
21
22
|
const compiledDist = compile(logger, packageInfo, "dist");
|
|
@@ -33,8 +34,9 @@ var Build = class Build extends Command {
|
|
|
33
34
|
mergeTagsEnvs(flags);
|
|
34
35
|
if (flags["generate-tags"]) checkAndGenerateCtags(logger, flags);
|
|
35
36
|
logger.info("Template Pack build done.");
|
|
36
|
-
}
|
|
37
|
-
|
|
37
|
+
});
|
|
38
|
+
return cmd;
|
|
39
|
+
}
|
|
38
40
|
function generateTsBinding(compiledDist) {
|
|
39
41
|
let dts = `declare type TemplateFromFile = { readonly type: "from-file"; readonly path: string; };\n`;
|
|
40
42
|
dts += `declare type TplName = ${compiledDist.templates.map((tpl) => "\"" + tpl.fullName.id + "\"").join(" | ")};\n`;
|
|
@@ -118,6 +120,6 @@ function checkRunError(result, message) {
|
|
|
118
120
|
if (result.status !== 0) console.log(`WARN: ${msg} the build will continue as-is`);
|
|
119
121
|
}
|
|
120
122
|
//#endregion
|
|
121
|
-
export {
|
|
123
|
+
export { buildCommand as default };
|
|
122
124
|
|
|
123
125
|
//# sourceMappingURL=build.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","names":["opts.
|
|
1
|
+
{"version":3,"file":"build.js","names":["opts.GlobalOptions","opts.CtagsOptions"],"sources":["../../src/commands/build.ts"],"sourcesContent":["import type { SpawnSyncReturns } from \"node:child_process\";\nimport { spawnSync } from \"node:child_process\";\nimport { Command } from \"commander\";\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 function buildCommand(): Command {\n const cmd = new Command(\"build\").description(\n \"build tengo sources into single distributable pack file\",\n );\n\n opts.addOptions(cmd, opts.GlobalOptions(), opts.CtagsOptions());\n\n cmd.action(async (o) => {\n const flags = {\n \"log-level\": o.logLevel as string,\n \"generate-tags\": o.generateTags as boolean,\n \"tags-file\": o.tagsFile as string,\n \"tags-additional-args\": o.tagsAdditionalArgs as string[],\n };\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 return cmd;\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
|
@@ -3,19 +3,17 @@ const require_util = require("../compiler/util.cjs");
|
|
|
3
3
|
const require_basecmd = require("../shared/basecmd.cjs");
|
|
4
4
|
const require_dump = require("../shared/dump.cjs");
|
|
5
5
|
const require_proc = require("../shared/proc.cjs");
|
|
6
|
-
let
|
|
6
|
+
let commander = require("commander");
|
|
7
7
|
let _milaboratories_tengo_tester = require("@milaboratories/tengo-tester");
|
|
8
8
|
//#region src/commands/check.ts
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const testerArgs = argv.length == 0 ? ["./src"] : argv;
|
|
18
|
-
const tester = require_proc.spawnEmbed(_milaboratories_tengo_tester.TengoTesterBinaryPath, "check", "--log-level", flags["log-level"], "--artifacts", "-", ...testerArgs);
|
|
9
|
+
function checkCommand() {
|
|
10
|
+
const cmd = new commander.Command("check").description("check tengo sources for language processor an");
|
|
11
|
+
cmd.argument("[paths...]", "source paths to check (defaults to ./src)");
|
|
12
|
+
require_basecmd.addOptions(cmd, require_basecmd.GlobalOptions());
|
|
13
|
+
cmd.action(async (paths, o) => {
|
|
14
|
+
const logLevel = o.logLevel;
|
|
15
|
+
const logger = require_util.createLogger(logLevel);
|
|
16
|
+
const tester = require_proc.spawnEmbed(_milaboratories_tengo_tester.TengoTesterBinaryPath, "check", "--log-level", logLevel, "--artifacts", "-", ...paths.length == 0 ? ["./src"] : paths);
|
|
19
17
|
try {
|
|
20
18
|
require_dump.dumpArtifacts(logger, tester.stdin);
|
|
21
19
|
} catch (err) {
|
|
@@ -25,9 +23,10 @@ var Check = class Check extends _oclif_core.Command {
|
|
|
25
23
|
const code = await require_proc.waitFor(tester);
|
|
26
24
|
process.exit(code);
|
|
27
25
|
}
|
|
28
|
-
}
|
|
29
|
-
|
|
26
|
+
});
|
|
27
|
+
return cmd;
|
|
28
|
+
}
|
|
30
29
|
//#endregion
|
|
31
|
-
exports.default =
|
|
30
|
+
exports.default = checkCommand;
|
|
32
31
|
|
|
33
32
|
//# sourceMappingURL=check.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.cjs","names":["Command","
|
|
1
|
+
{"version":3,"file":"check.cjs","names":["Command","GlobalOptions","createLogger","spawnEmbed","TengoTesterBinaryPath","waitFor"],"sources":["../../src/commands/check.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { createLogger } from \"../compiler/util\";\nimport { dumpArtifacts } from \"../shared/dump\";\nimport { addOptions, GlobalOptions } from \"../shared/basecmd\";\nimport { spawnEmbed, waitFor } from \"../shared/proc\";\nimport { TengoTesterBinaryPath } from \"@milaboratories/tengo-tester\";\n\nexport default function checkCommand(): Command {\n const cmd = new Command(\"check\").description(\"check tengo sources for language processor an\");\n\n cmd.argument(\"[paths...]\", \"source paths to check (defaults to ./src)\");\n addOptions(cmd, GlobalOptions());\n\n cmd.action(async (paths: string[], o) => {\n const logLevel = o.logLevel as string;\n const logger = createLogger(logLevel);\n\n const testerArgs: string[] = paths.length == 0 ? [\"./src\"] : paths;\n\n const tester = spawnEmbed(\n TengoTesterBinaryPath,\n \"check\",\n \"--log-level\",\n logLevel,\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 return cmd;\n}\n"],"mappings":";;;;;;;;AAOA,SAAwB,eAAwB;CAC9C,MAAM,MAAM,IAAIA,UAAAA,QAAQ,QAAQ,CAAC,YAAY,gDAAgD;AAE7F,KAAI,SAAS,cAAc,4CAA4C;AACvE,iBAAA,WAAW,KAAKC,gBAAAA,eAAe,CAAC;AAEhC,KAAI,OAAO,OAAO,OAAiB,MAAM;EACvC,MAAM,WAAW,EAAE;EACnB,MAAM,SAASC,aAAAA,aAAa,SAAS;EAIrC,MAAM,SAASC,aAAAA,WACbC,6BAAAA,uBACA,SACA,eACA,UACA,eACA,KACA,GAT2B,MAAM,UAAU,IAAI,CAAC,QAAQ,GAAG,MAU5D;AAED,MAAI;AACF,gBAAA,cAAc,QAAQ,OAAO,MAAM;WAC5B,KAAc;AACrB,UAAO,MAAM,IAAI;YACT;AACR,UAAO,MAAM,KAAK;GAClB,MAAM,OAAO,MAAMC,aAAAA,QAAQ,OAAO;AAClC,WAAQ,KAAK,KAAK;;GAEpB;AAEF,QAAO"}
|
package/dist/commands/check.js
CHANGED
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
import { createLogger } from "../compiler/util.js";
|
|
2
|
-
import {
|
|
2
|
+
import { GlobalOptions, addOptions } from "../shared/basecmd.js";
|
|
3
3
|
import { dumpArtifacts } from "../shared/dump.js";
|
|
4
4
|
import { spawnEmbed, waitFor } from "../shared/proc.js";
|
|
5
|
-
import { Command } from "
|
|
5
|
+
import { Command } from "commander";
|
|
6
6
|
import { TengoTesterBinaryPath } from "@milaboratories/tengo-tester";
|
|
7
7
|
//#region src/commands/check.ts
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const testerArgs = argv.length == 0 ? ["./src"] : argv;
|
|
17
|
-
const tester = spawnEmbed(TengoTesterBinaryPath, "check", "--log-level", flags["log-level"], "--artifacts", "-", ...testerArgs);
|
|
8
|
+
function checkCommand() {
|
|
9
|
+
const cmd = new Command("check").description("check tengo sources for language processor an");
|
|
10
|
+
cmd.argument("[paths...]", "source paths to check (defaults to ./src)");
|
|
11
|
+
addOptions(cmd, GlobalOptions());
|
|
12
|
+
cmd.action(async (paths, o) => {
|
|
13
|
+
const logLevel = o.logLevel;
|
|
14
|
+
const logger = createLogger(logLevel);
|
|
15
|
+
const tester = spawnEmbed(TengoTesterBinaryPath, "check", "--log-level", logLevel, "--artifacts", "-", ...paths.length == 0 ? ["./src"] : paths);
|
|
18
16
|
try {
|
|
19
17
|
dumpArtifacts(logger, tester.stdin);
|
|
20
18
|
} catch (err) {
|
|
@@ -24,9 +22,10 @@ var Check = class Check extends Command {
|
|
|
24
22
|
const code = await waitFor(tester);
|
|
25
23
|
process.exit(code);
|
|
26
24
|
}
|
|
27
|
-
}
|
|
28
|
-
|
|
25
|
+
});
|
|
26
|
+
return cmd;
|
|
27
|
+
}
|
|
29
28
|
//#endregion
|
|
30
|
-
export {
|
|
29
|
+
export { checkCommand as default };
|
|
31
30
|
|
|
32
31
|
//# sourceMappingURL=check.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","names":[],"sources":["../../src/commands/check.ts"],"sourcesContent":["import { Command } from \"
|
|
1
|
+
{"version":3,"file":"check.js","names":[],"sources":["../../src/commands/check.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { createLogger } from \"../compiler/util\";\nimport { dumpArtifacts } from \"../shared/dump\";\nimport { addOptions, GlobalOptions } from \"../shared/basecmd\";\nimport { spawnEmbed, waitFor } from \"../shared/proc\";\nimport { TengoTesterBinaryPath } from \"@milaboratories/tengo-tester\";\n\nexport default function checkCommand(): Command {\n const cmd = new Command(\"check\").description(\"check tengo sources for language processor an\");\n\n cmd.argument(\"[paths...]\", \"source paths to check (defaults to ./src)\");\n addOptions(cmd, GlobalOptions());\n\n cmd.action(async (paths: string[], o) => {\n const logLevel = o.logLevel as string;\n const logger = createLogger(logLevel);\n\n const testerArgs: string[] = paths.length == 0 ? [\"./src\"] : paths;\n\n const tester = spawnEmbed(\n TengoTesterBinaryPath,\n \"check\",\n \"--log-level\",\n logLevel,\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 return cmd;\n}\n"],"mappings":";;;;;;;AAOA,SAAwB,eAAwB;CAC9C,MAAM,MAAM,IAAI,QAAQ,QAAQ,CAAC,YAAY,gDAAgD;AAE7F,KAAI,SAAS,cAAc,4CAA4C;AACvE,YAAW,KAAK,eAAe,CAAC;AAEhC,KAAI,OAAO,OAAO,OAAiB,MAAM;EACvC,MAAM,WAAW,EAAE;EACnB,MAAM,SAAS,aAAa,SAAS;EAIrC,MAAM,SAAS,WACb,uBACA,SACA,eACA,UACA,eACA,KACA,GAT2B,MAAM,UAAU,IAAI,CAAC,QAAQ,GAAG,MAU5D;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;;GAEpB;AAEF,QAAO"}
|
|
@@ -2,22 +2,18 @@ require("../../_virtual/_rolldown/runtime.cjs");
|
|
|
2
2
|
const require_util = require("../../compiler/util.cjs");
|
|
3
3
|
const require_basecmd = require("../../shared/basecmd.cjs");
|
|
4
4
|
const require_dump = require("../../shared/dump.cjs");
|
|
5
|
-
let
|
|
5
|
+
let commander = require("commander");
|
|
6
6
|
let node_process = require("node:process");
|
|
7
7
|
//#region src/commands/dump/artifacts.ts
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const { flags } = await this.parse(DumpArtifacts);
|
|
17
|
-
require_dump.dumpArtifacts(require_util.createLogger(flags["log-level"]), node_process.stdout, flags.type == "all" ? void 0 : flags.type);
|
|
18
|
-
}
|
|
19
|
-
};
|
|
8
|
+
function dumpArtifactsCommand() {
|
|
9
|
+
const cmd = new commander.Command("artifacts").description("parse sources in current package and dump all found artifacts to stdout");
|
|
10
|
+
require_basecmd.addOptions(cmd, require_basecmd.GlobalOptions(), require_basecmd.ArtifactTypeOptions());
|
|
11
|
+
cmd.action(async (o) => {
|
|
12
|
+
require_dump.dumpArtifacts(require_util.createLogger(o.logLevel), node_process.stdout, o.type == "all" ? void 0 : o.type);
|
|
13
|
+
});
|
|
14
|
+
return cmd;
|
|
15
|
+
}
|
|
20
16
|
//#endregion
|
|
21
|
-
exports.default =
|
|
17
|
+
exports.default = dumpArtifactsCommand;
|
|
22
18
|
|
|
23
19
|
//# sourceMappingURL=artifacts.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.cjs","names":["Command","createLogger","stdout"],"sources":["../../../src/commands/dump/artifacts.ts"],"sourcesContent":["import { Command } from \"
|
|
1
|
+
{"version":3,"file":"artifacts.cjs","names":["Command","createLogger","stdout"],"sources":["../../../src/commands/dump/artifacts.ts"],"sourcesContent":["import { Command } from \"commander\";\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 function dumpArtifactsCommand(): Command {\n const cmd = new Command(\"artifacts\").description(\n \"parse sources in current package and dump all found artifacts to stdout\",\n );\n\n opts.addOptions(cmd, opts.GlobalOptions(), opts.ArtifactTypeOptions());\n\n cmd.action(async (o) => {\n const logger = createLogger(o.logLevel as string);\n dumpArtifacts(logger, stdout, o.type == \"all\" ? undefined : (o.type as ArtifactType));\n });\n\n return cmd;\n}\n"],"mappings":";;;;;;;AAOA,SAAwB,uBAAgC;CACtD,MAAM,MAAM,IAAIA,UAAAA,QAAQ,YAAY,CAAC,YACnC,0EACD;AAED,iBAAA,WAAgB,KAAA,gBAAA,eAAyB,EAAA,gBAAA,qBAA4B,CAAC;AAEtE,KAAI,OAAO,OAAO,MAAM;AAEtB,eAAA,cADeC,aAAAA,aAAa,EAAE,SAAmB,EAC3BC,aAAAA,QAAQ,EAAE,QAAQ,QAAQ,KAAA,IAAa,EAAE,KAAsB;GACrF;AAEF,QAAO"}
|
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
import { createLogger } from "../../compiler/util.js";
|
|
2
|
-
import {
|
|
2
|
+
import { ArtifactTypeOptions, GlobalOptions, addOptions } from "../../shared/basecmd.js";
|
|
3
3
|
import { dumpArtifacts } from "../../shared/dump.js";
|
|
4
|
-
import { Command } from "
|
|
4
|
+
import { Command } from "commander";
|
|
5
5
|
import { stdout } from "node:process";
|
|
6
6
|
//#region src/commands/dump/artifacts.ts
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const { flags } = await this.parse(DumpArtifacts);
|
|
16
|
-
dumpArtifacts(createLogger(flags["log-level"]), stdout, flags.type == "all" ? void 0 : flags.type);
|
|
17
|
-
}
|
|
18
|
-
};
|
|
7
|
+
function dumpArtifactsCommand() {
|
|
8
|
+
const cmd = new Command("artifacts").description("parse sources in current package and dump all found artifacts to stdout");
|
|
9
|
+
addOptions(cmd, GlobalOptions(), ArtifactTypeOptions());
|
|
10
|
+
cmd.action(async (o) => {
|
|
11
|
+
dumpArtifacts(createLogger(o.logLevel), stdout, o.type == "all" ? void 0 : o.type);
|
|
12
|
+
});
|
|
13
|
+
return cmd;
|
|
14
|
+
}
|
|
19
15
|
//#endregion
|
|
20
|
-
export {
|
|
16
|
+
export { dumpArtifactsCommand as default };
|
|
21
17
|
|
|
22
18
|
//# sourceMappingURL=artifacts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.js","names":["opts.
|
|
1
|
+
{"version":3,"file":"artifacts.js","names":["opts.GlobalOptions","opts.ArtifactTypeOptions"],"sources":["../../../src/commands/dump/artifacts.ts"],"sourcesContent":["import { Command } from \"commander\";\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 function dumpArtifactsCommand(): Command {\n const cmd = new Command(\"artifacts\").description(\n \"parse sources in current package and dump all found artifacts to stdout\",\n );\n\n opts.addOptions(cmd, opts.GlobalOptions(), opts.ArtifactTypeOptions());\n\n cmd.action(async (o) => {\n const logger = createLogger(o.logLevel as string);\n dumpArtifacts(logger, stdout, o.type == \"all\" ? undefined : (o.type as ArtifactType));\n });\n\n return cmd;\n}\n"],"mappings":";;;;;;AAOA,SAAwB,uBAAgC;CACtD,MAAM,MAAM,IAAI,QAAQ,YAAY,CAAC,YACnC,0EACD;AAED,YAAgB,KAAKA,eAAoB,EAAEC,qBAA0B,CAAC;AAEtE,KAAI,OAAO,OAAO,MAAM;AAEtB,gBADe,aAAa,EAAE,SAAmB,EAC3B,QAAQ,EAAE,QAAQ,QAAQ,KAAA,IAAa,EAAE,KAAsB;GACrF;AAEF,QAAO"}
|
|
@@ -2,19 +2,18 @@ require("../../_virtual/_rolldown/runtime.cjs");
|
|
|
2
2
|
const require_util = require("../../compiler/util.cjs");
|
|
3
3
|
const require_basecmd = require("../../shared/basecmd.cjs");
|
|
4
4
|
const require_dump = require("../../shared/dump.cjs");
|
|
5
|
-
let
|
|
5
|
+
let commander = require("commander");
|
|
6
6
|
let node_process = require("node:process");
|
|
7
7
|
//#region src/commands/dump/software.ts
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
8
|
+
function dumpSoftwareCommand() {
|
|
9
|
+
const cmd = new commander.Command("software").description("parse sources in current package and dump all software descriptors used by templates");
|
|
10
|
+
require_basecmd.addOptions(cmd, require_basecmd.GlobalOptions());
|
|
11
|
+
cmd.action(async (o) => {
|
|
12
|
+
require_dump.dumpSoftware(require_util.createLogger(o.logLevel), node_process.stdout);
|
|
13
|
+
});
|
|
14
|
+
return cmd;
|
|
15
|
+
}
|
|
17
16
|
//#endregion
|
|
18
|
-
exports.default =
|
|
17
|
+
exports.default = dumpSoftwareCommand;
|
|
19
18
|
|
|
20
19
|
//# sourceMappingURL=software.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"software.cjs","names":["Command","createLogger","stdout"],"sources":["../../../src/commands/dump/software.ts"],"sourcesContent":["import { Command } from \"
|
|
1
|
+
{"version":3,"file":"software.cjs","names":["Command","createLogger","stdout"],"sources":["../../../src/commands/dump/software.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { createLogger } from \"../../compiler/util\";\nimport { dumpSoftware } from \"../../shared/dump\";\nimport { stdout } from \"node:process\";\nimport * as opts from \"../../shared/basecmd\";\n\nexport default function dumpSoftwareCommand(): Command {\n const cmd = new Command(\"software\").description(\n \"parse sources in current package and dump all software descriptors used by templates\",\n );\n\n opts.addOptions(cmd, opts.GlobalOptions());\n\n cmd.action(async (o) => {\n const logger = createLogger(o.logLevel as string);\n dumpSoftware(logger, stdout);\n });\n\n return cmd;\n}\n"],"mappings":";;;;;;;AAMA,SAAwB,sBAA+B;CACrD,MAAM,MAAM,IAAIA,UAAAA,QAAQ,WAAW,CAAC,YAClC,uFACD;AAED,iBAAA,WAAgB,KAAA,gBAAA,eAAyB,CAAC;AAE1C,KAAI,OAAO,OAAO,MAAM;AAEtB,eAAA,aADeC,aAAAA,aAAa,EAAE,SAAmB,EAC5BC,aAAAA,OAAO;GAC5B;AAEF,QAAO"}
|