@platforma-sdk/tengo-builder 4.0.8 → 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.
Files changed (56) hide show
  1. package/bin/run.js +5 -10
  2. package/dist/cli.cjs +28 -0
  3. package/dist/cli.cjs.map +1 -0
  4. package/dist/cli.d.ts +8 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +26 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/build.cjs +15 -13
  9. package/dist/commands/build.cjs.map +1 -1
  10. package/dist/commands/build.js +16 -14
  11. package/dist/commands/build.js.map +1 -1
  12. package/dist/commands/check.cjs +13 -14
  13. package/dist/commands/check.cjs.map +1 -1
  14. package/dist/commands/check.js +14 -15
  15. package/dist/commands/check.js.map +1 -1
  16. package/dist/commands/dump/artifacts.cjs +10 -14
  17. package/dist/commands/dump/artifacts.cjs.map +1 -1
  18. package/dist/commands/dump/artifacts.js +11 -15
  19. package/dist/commands/dump/artifacts.js.map +1 -1
  20. package/dist/commands/dump/software.cjs +10 -11
  21. package/dist/commands/dump/software.cjs.map +1 -1
  22. package/dist/commands/dump/software.js +11 -12
  23. package/dist/commands/dump/software.js.map +1 -1
  24. package/dist/commands/test.cjs +13 -14
  25. package/dist/commands/test.cjs.map +1 -1
  26. package/dist/commands/test.js +14 -15
  27. package/dist/commands/test.js.map +1 -1
  28. package/dist/index.cjs +3 -17
  29. package/dist/index.d.ts +2 -17
  30. package/dist/index.js +2 -17
  31. package/dist/shared/basecmd.cjs +33 -44
  32. package/dist/shared/basecmd.cjs.map +1 -1
  33. package/dist/shared/basecmd.js +30 -42
  34. package/dist/shared/basecmd.js.map +1 -1
  35. package/package.json +7 -18
  36. package/src/cli.ts +27 -0
  37. package/src/commands/build.ts +16 -12
  38. package/src/commands/check.ts +14 -19
  39. package/src/commands/dump/artifacts.ts +11 -14
  40. package/src/commands/dump/software.ts +11 -13
  41. package/src/commands/test.ts +14 -15
  42. package/src/index.ts +1 -15
  43. package/src/shared/basecmd.ts +36 -32
  44. package/dist/commands/build.d.ts +0 -18
  45. package/dist/commands/build.d.ts.map +0 -1
  46. package/dist/commands/check.d.ts +0 -16
  47. package/dist/commands/check.d.ts.map +0 -1
  48. package/dist/commands/dump/artifacts.d.ts +0 -16
  49. package/dist/commands/dump/artifacts.d.ts.map +0 -1
  50. package/dist/commands/dump/software.d.ts +0 -15
  51. package/dist/commands/dump/software.d.ts.map +0 -1
  52. package/dist/commands/test.d.ts +0 -16
  53. package/dist/commands/test.d.ts.map +0 -1
  54. package/dist/index.cjs.map +0 -1
  55. package/dist/index.d.ts.map +0 -1
  56. 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 { dirname } from "node:path";
4
- import { fileURLToPath } from "node:url";
3
+ import { run } from "../dist/index.js";
5
4
 
6
- const __filename = fileURLToPath(import.meta.url);
7
- const __dirname = dirname(__filename);
8
-
9
- // eslint-disable-next-line unicorn/prefer-top-level-await
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
@@ -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,8 @@
1
+ import { Command } from "commander";
2
+
3
+ //#region src/cli.d.ts
4
+ declare function buildProgram(): Command;
5
+ declare function run(argv?: string[]): Promise<void>;
6
+ //#endregion
7
+ export { buildProgram, run };
8
+ //# sourceMappingURL=cli.d.ts.map
@@ -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
@@ -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"}
@@ -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
- var Build = class Build extends _oclif_core.Command {
15
- static description = "build tengo sources into single distributable pack file";
16
- static examples = ["<%= config.bin %> <%= command.id %>"];
17
- static flags = {
18
- ...require_basecmd.GlobalFlags,
19
- ...require_basecmd.CtagsFlags
20
- };
21
- async run() {
22
- const { flags } = await this.parse(Build);
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 = Build;
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 \"@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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"}
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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"}
@@ -1,21 +1,22 @@
1
1
  import { createLogger } from "../compiler/util.js";
2
2
  import { compile, getPackageInfo, savePacks } from "../compiler/main.js";
3
- import { CtagsFlags, GlobalFlags } from "../shared/basecmd.js";
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
- var Build = class Build extends Command {
11
- static description = "build tengo sources into single distributable pack file";
12
- static examples = ["<%= config.bin %> <%= command.id %>"];
13
- static flags = {
14
- ...GlobalFlags,
15
- ...CtagsFlags
16
- };
17
- async run() {
18
- const { flags } = await this.parse(Build);
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 { Build as default };
123
+ export { buildCommand as default };
122
124
 
123
125
  //# sourceMappingURL=build.js.map
@@ -1 +1 @@
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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"}
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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"}
@@ -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 _oclif_core = require("@oclif/core");
6
+ let commander = require("commander");
7
7
  let _milaboratories_tengo_tester = require("@milaboratories/tengo-tester");
8
8
  //#region src/commands/check.ts
9
- var Check = class Check extends _oclif_core.Command {
10
- static description = "check tengo sources for language processor an";
11
- static strict = false;
12
- static flags = { ...require_basecmd.GlobalFlags };
13
- static examples = ["<%= config.bin %> <%= command.id %>"];
14
- async run() {
15
- const { flags, argv } = await this.parse(Check);
16
- const logger = require_util.createLogger(flags["log-level"]);
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 = Check;
30
+ exports.default = checkCommand;
32
31
 
33
32
  //# sourceMappingURL=check.cjs.map
@@ -1 +1 @@
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,YAAAA,QAAQ;CACzC,OAAgB,cAAc;CAM9B,OAAO,SAAS;CAEhB,OAAgB,QAAQ,EAAE,GAAGC,gBAAAA,aAAa;CAE1C,OAAgB,WAAW,CAAC,sCAAsC;CAElE,MAAa,MAAqB;EAChC,MAAM,EAAE,OAAO,SAAS,MAAM,KAAK,MAAM,MAAM;EAC/C,MAAM,SAASC,aAAAA,aAAa,MAAM,aAAa;EAE/C,MAAM,aAAuB,KAAK,UAAU,IAAI,CAAC,QAAQ,GAAI;EAE7D,MAAM,SAASC,aAAAA,WACbC,6BAAAA,uBACA,SACA,eACA,MAAM,cACN,eACA,KACA,GAAG,WACJ;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"}
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"}
@@ -1,20 +1,18 @@
1
1
  import { createLogger } from "../compiler/util.js";
2
- import { GlobalFlags } from "../shared/basecmd.js";
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 "@oclif/core";
5
+ import { Command } from "commander";
6
6
  import { TengoTesterBinaryPath } from "@milaboratories/tengo-tester";
7
7
  //#region src/commands/check.ts
8
- var Check = class Check extends Command {
9
- static description = "check tengo sources for language processor an";
10
- static strict = false;
11
- static flags = { ...GlobalFlags };
12
- static examples = ["<%= config.bin %> <%= command.id %>"];
13
- async run() {
14
- const { flags, argv } = await this.parse(Check);
15
- const logger = createLogger(flags["log-level"]);
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 { Check as default };
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 \"@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
+ {"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 _oclif_core = require("@oclif/core");
5
+ let commander = require("commander");
6
6
  let node_process = require("node:process");
7
7
  //#region src/commands/dump/artifacts.ts
8
- var DumpArtifacts = class DumpArtifacts extends _oclif_core.Command {
9
- static description = "parse sources in current package and dump all found artifacts to stdout";
10
- static examples = ["<%= config.bin %> <%= command.id %>"];
11
- static flags = {
12
- ...require_basecmd.GlobalFlags,
13
- ...require_basecmd.ArtifactTypeFlag
14
- };
15
- async run() {
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 = DumpArtifacts;
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 \"@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,YAAAA,QAAQ;CACjD,OAAgB,cACd;CAEF,OAAgB,WAAW,CAAC,sCAAsC;CAElE,OAAgB,QAAQ;EACtB,GAAA,gBAAA;EACA,GAAA,gBAAA;EACD;CAED,MAAa,MAAqB;EAChC,MAAM,EAAE,UAAU,MAAM,KAAK,MAAM,cAAc;AAEjD,eAAA,cADeC,aAAAA,aAAa,MAAM,aAAa,EACzBC,aAAAA,QAAQ,MAAM,QAAQ,QAAQ,KAAA,IAAa,MAAM,KAAsB"}
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 { ArtifactTypeFlag, GlobalFlags } from "../../shared/basecmd.js";
2
+ import { ArtifactTypeOptions, GlobalOptions, addOptions } from "../../shared/basecmd.js";
3
3
  import { dumpArtifacts } from "../../shared/dump.js";
4
- import { Command } from "@oclif/core";
4
+ import { Command } from "commander";
5
5
  import { stdout } from "node:process";
6
6
  //#region src/commands/dump/artifacts.ts
7
- var DumpArtifacts = class DumpArtifacts extends Command {
8
- static description = "parse sources in current package and dump all found artifacts to stdout";
9
- static examples = ["<%= config.bin %> <%= command.id %>"];
10
- static flags = {
11
- ...GlobalFlags,
12
- ...ArtifactTypeFlag
13
- };
14
- async run() {
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 { DumpArtifacts as default };
16
+ export { dumpArtifactsCommand as default };
21
17
 
22
18
  //# sourceMappingURL=artifacts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","names":["opts.GlobalFlags","opts.ArtifactTypeFlag"],"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,sBAAsB,QAAQ;CACjD,OAAgB,cACd;CAEF,OAAgB,WAAW,CAAC,sCAAsC;CAElE,OAAgB,QAAQ;EACtB,GAAGA;EACH,GAAGC;EACJ;CAED,MAAa,MAAqB;EAChC,MAAM,EAAE,UAAU,MAAM,KAAK,MAAM,cAAc;AAEjD,gBADe,aAAa,MAAM,aAAa,EACzB,QAAQ,MAAM,QAAQ,QAAQ,KAAA,IAAa,MAAM,KAAsB"}
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 _oclif_core = require("@oclif/core");
5
+ let commander = require("commander");
6
6
  let node_process = require("node:process");
7
7
  //#region src/commands/dump/software.ts
8
- var DumpSoftware = class DumpSoftware extends _oclif_core.Command {
9
- static description = "parse sources in current package and dump all software descriptors used by templates";
10
- static examples = ["<%= config.bin %> <%= command.id %>"];
11
- static flags = { ...require_basecmd.GlobalFlags };
12
- async run() {
13
- const { flags } = await this.parse(DumpSoftware);
14
- require_dump.dumpSoftware(require_util.createLogger(flags["log-level"]), node_process.stdout);
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 = DumpSoftware;
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 \"@oclif/core\";\nimport { createLogger } from \"../../compiler/util\";\nimport { dumpSoftware } from \"../../shared/dump\";\nimport { stdout } from \"node:process\";\nimport * as opts from \"../../shared/basecmd\";\n\nexport default class DumpSoftware extends Command {\n static override description =\n \"parse sources in current package and dump all software descriptors used by templates\";\n\n static override examples = [\"<%= config.bin %> <%= command.id %>\"];\n\n static override flags = {\n ...opts.GlobalFlags,\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(DumpSoftware);\n const logger = createLogger(flags[\"log-level\"]);\n dumpSoftware(logger, stdout);\n }\n}\n"],"mappings":";;;;;;;AAMA,IAAqB,eAArB,MAAqB,qBAAqBA,YAAAA,QAAQ;CAChD,OAAgB,cACd;CAEF,OAAgB,WAAW,CAAC,sCAAsC;CAElE,OAAgB,QAAQ,EACtB,GAAA,gBAAA,aACD;CAED,MAAa,MAAqB;EAChC,MAAM,EAAE,UAAU,MAAM,KAAK,MAAM,aAAa;AAEhD,eAAA,aADeC,aAAAA,aAAa,MAAM,aAAa,EAC1BC,aAAAA,OAAO"}
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"}