@layerzerolabs/vm-tooling 0.2.77 → 0.2.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/25W5MXEX.cjs +17 -0
- package/dist/{KFMDBFI6.cjs.map → 25W5MXEX.cjs.map} +1 -1
- package/dist/{QIYLVNDK.cjs → 2JEGETUJ.cjs} +17 -17
- package/dist/{QIYLVNDK.cjs.map → 2JEGETUJ.cjs.map} +1 -1
- package/dist/{7XVJ6B7B.js → 2XGBQPKA.js} +3 -3
- package/dist/{7XVJ6B7B.js.map → 2XGBQPKA.js.map} +1 -1
- package/dist/{6N2O5WLJ.js → 3I5XNU26.js} +7 -7
- package/dist/{6N2O5WLJ.js.map → 3I5XNU26.js.map} +1 -1
- package/dist/{KWRJPB5T.js → 3XEUJAQB.js} +3 -3
- package/dist/{KWRJPB5T.js.map → 3XEUJAQB.js.map} +1 -1
- package/dist/{5GPMTH2I.cjs → 4BP4CCPZ.cjs} +9 -9
- package/dist/{5GPMTH2I.cjs.map → 4BP4CCPZ.cjs.map} +1 -1
- package/dist/{44LEKNKN.js → 4SFAVHVD.js} +3 -3
- package/dist/{44LEKNKN.js.map → 4SFAVHVD.js.map} +1 -1
- package/dist/{AWXMRCLV.cjs → 56KN6KX2.cjs} +23 -23
- package/dist/{AWXMRCLV.cjs.map → 56KN6KX2.cjs.map} +1 -1
- package/dist/{ZO7WI2XS.js → 6L6NUQMM.js} +5 -5
- package/dist/{ZO7WI2XS.js.map → 6L6NUQMM.js.map} +1 -1
- package/dist/{ZUEHTSW3.js → 6V27P6AU.js} +4 -4
- package/dist/{ZUEHTSW3.js.map → 6V27P6AU.js.map} +1 -1
- package/dist/{VKQ2FF2R.cjs → 7WWOPL2K.cjs} +8 -8
- package/dist/{VKQ2FF2R.cjs.map → 7WWOPL2K.cjs.map} +1 -1
- package/dist/{2PV3VF5J.js → AXL4SBDJ.js} +5 -5
- package/dist/{2PV3VF5J.js.map → AXL4SBDJ.js.map} +1 -1
- package/dist/{X4R3PN6F.js → BJUOU4DR.js} +3 -3
- package/dist/{X4R3PN6F.js.map → BJUOU4DR.js.map} +1 -1
- package/dist/{QLLNMABS.js → BTPRTHPR.js} +4 -4
- package/dist/{QLLNMABS.js.map → BTPRTHPR.js.map} +1 -1
- package/dist/CAPBDIIE.js +6 -0
- package/dist/{XROMTYOP.js.map → CAPBDIIE.js.map} +1 -1
- package/dist/{6AHA7PAZ.js → CWKWODSW.js} +3 -3
- package/dist/CWKWODSW.js.map +1 -0
- package/dist/{VP57EIXW.cjs → HOQEVWFL.cjs} +14 -14
- package/dist/{VP57EIXW.cjs.map → HOQEVWFL.cjs.map} +1 -1
- package/dist/{FURTC2JJ.js → KHVBCTKK.js} +9 -9
- package/dist/{FURTC2JJ.js.map → KHVBCTKK.js.map} +1 -1
- package/dist/{24WEKBY3.cjs → KHVGLVR5.cjs} +4 -4
- package/dist/KHVGLVR5.cjs.map +1 -0
- package/dist/M6CETDAD.cjs +8 -0
- package/dist/{Y76LNXBO.cjs.map → M6CETDAD.cjs.map} +1 -1
- package/dist/P4BHRQMD.js +6 -0
- package/dist/{22DCFDRO.js.map → P4BHRQMD.js.map} +1 -1
- package/dist/{GGKJNPTT.js → PYS2ZW6G.js} +6 -6
- package/dist/PYS2ZW6G.js.map +1 -0
- package/dist/{HFI4IGT2.js → QH3FM6DD.js} +5 -5
- package/dist/{HFI4IGT2.js.map → QH3FM6DD.js.map} +1 -1
- package/dist/{SGY6Q4GR.cjs → QLR2UW44.cjs} +11 -11
- package/dist/{SGY6Q4GR.cjs.map → QLR2UW44.cjs.map} +1 -1
- package/dist/{2Z4Y2ZR3.cjs → REVK4LZT.cjs} +8 -8
- package/dist/{2Z4Y2ZR3.cjs.map → REVK4LZT.cjs.map} +1 -1
- package/dist/{7PWQZJWC.cjs → RVRC4KBY.cjs} +7 -7
- package/dist/{7PWQZJWC.cjs.map → RVRC4KBY.cjs.map} +1 -1
- package/dist/{AIP5GLUJ.cjs → S6PEV2YJ.cjs} +11 -11
- package/dist/{AIP5GLUJ.cjs.map → S6PEV2YJ.cjs.map} +1 -1
- package/dist/{77VFG7S6.js → S7YAUZ26.js} +5 -5
- package/dist/{77VFG7S6.js.map → S7YAUZ26.js.map} +1 -1
- package/dist/{WSGRZJVU.js → UBUQDI5Q.js} +4 -4
- package/dist/{WSGRZJVU.js.map → UBUQDI5Q.js.map} +1 -1
- package/dist/{IPYOACCU.cjs → UOFUYV3K.cjs} +9 -9
- package/dist/{IPYOACCU.cjs.map → UOFUYV3K.cjs.map} +1 -1
- package/dist/{A5X4BLYY.cjs → WFBRUQAF.cjs} +11 -11
- package/dist/{A5X4BLYY.cjs.map → WFBRUQAF.cjs.map} +1 -1
- package/dist/X64VX57C.cjs +11 -0
- package/dist/{T3GK7LED.cjs.map → X64VX57C.cjs.map} +1 -1
- package/dist/{6LSAIGRV.cjs → XKJWJQ2X.cjs} +10 -10
- package/dist/{6LSAIGRV.cjs.map → XKJWJQ2X.cjs.map} +1 -1
- package/dist/XSZ224E6.cjs +8 -0
- package/dist/{24NWZBNF.cjs.map → XSZ224E6.cjs.map} +1 -1
- package/dist/{V7FMMGFT.js → ZSOVVFOM.js} +5 -5
- package/dist/{V7FMMGFT.js.map → ZSOVVFOM.js.map} +1 -1
- package/dist/{EUBM3LSR.cjs → ZZHCL54L.cjs} +26 -26
- package/dist/ZZHCL54L.cjs.map +1 -0
- package/dist/cli.cjs +15 -15
- package/dist/cli.js +14 -14
- package/dist/config.cjs +6 -6
- package/dist/config.js +2 -2
- package/dist/context.cjs +2 -2
- package/dist/context.cjs.map +1 -1
- package/dist/context.js +1 -1
- package/dist/core/index.cjs +12 -12
- package/dist/core/index.js +10 -10
- package/dist/core/lock.cjs +5 -5
- package/dist/core/lock.js +2 -2
- package/dist/core/lock.test.cjs +1046 -1046
- package/dist/core/lock.test.cjs.map +1 -1
- package/dist/core/lock.test.js +70 -70
- package/dist/core/lock.test.js.map +1 -1
- package/dist/core/tool-executor.cjs +10 -10
- package/dist/core/tool-executor.js +9 -9
- package/dist/core/version-resolver.cjs +5 -5
- package/dist/core/version-resolver.js +4 -4
- package/dist/display/formatters.cjs +5 -5
- package/dist/display/formatters.js +4 -4
- package/dist/display/index.cjs +9 -9
- package/dist/display/index.js +6 -6
- package/dist/display/version-display.cjs +7 -7
- package/dist/display/version-display.js +5 -5
- package/dist/github/index.cjs +7 -7
- package/dist/github/index.js +6 -6
- package/dist/github/matrix.cjs +6 -6
- package/dist/github/matrix.js +5 -5
- package/dist/index.cjs +25 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +17 -17
- package/dist/test.cjs +6 -6
- package/dist/test.js +5 -5
- package/dist/utils/docker.cjs +8 -8
- package/dist/utils/docker.js +4 -4
- package/dist/utils/error.cjs +3 -3
- package/dist/utils/error.js +2 -2
- package/dist/utils/finder.cjs +7 -7
- package/dist/utils/finder.js +2 -2
- package/dist/utils.cjs +6 -6
- package/dist/utils.js +3 -3
- package/package.json +4 -4
- package/dist/22DCFDRO.js +0 -6
- package/dist/24NWZBNF.cjs +0 -8
- package/dist/24WEKBY3.cjs.map +0 -1
- package/dist/6AHA7PAZ.js.map +0 -1
- package/dist/EUBM3LSR.cjs.map +0 -1
- package/dist/GGKJNPTT.js.map +0 -1
- package/dist/KFMDBFI6.cjs +0 -17
- package/dist/T3GK7LED.cjs +0 -11
- package/dist/XROMTYOP.js +0 -6
- package/dist/Y76LNXBO.cjs +0 -8
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var XKJWJQ2X_cjs = require('./XKJWJQ2X.cjs');
|
|
4
|
+
var KHVGLVR5_cjs = require('./KHVGLVR5.cjs');
|
|
5
|
+
var process = require('process');
|
|
6
|
+
|
|
7
|
+
// src/github/index.ts
|
|
8
|
+
KHVGLVR5_cjs.init_cjs_shims();
|
|
9
|
+
var runGithubMatrixGenerator = /* @__PURE__ */ KHVGLVR5_cjs.__name(async (images, directory, versionCombinations) => {
|
|
10
|
+
const entries = XKJWJQ2X_cjs.generateGithubMatrix(images, directory, versionCombinations);
|
|
11
|
+
console.warn("GitHub Action matrix generated:", JSON.stringify(entries, null, 2));
|
|
12
|
+
process.stdout.write(JSON.stringify(entries));
|
|
13
|
+
}, "runGithubMatrixGenerator");
|
|
14
|
+
|
|
15
|
+
exports.runGithubMatrixGenerator = runGithubMatrixGenerator;
|
|
16
|
+
//# sourceMappingURL=25W5MXEX.cjs.map
|
|
17
|
+
//# sourceMappingURL=25W5MXEX.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/github/index.ts"],"names":["init_cjs_shims","runGithubMatrixGenerator","__name","images","directory","versionCombinations","entries","generateGithubMatrix","console","warn","JSON","stringify","stdout","write"],"mappings":";;;;;;;AAAAA,
|
|
1
|
+
{"version":3,"sources":["../src/github/index.ts"],"names":["init_cjs_shims","runGithubMatrixGenerator","__name","images","directory","versionCombinations","entries","generateGithubMatrix","console","warn","JSON","stringify","stdout","write"],"mappings":";;;;;;;AAAAA,2BAAA,EAAA;AAKO,IAAMC,wBAAAA,mBAA2BC,mBAAA,CAAA,OACpCC,MAAAA,EACAC,SAAAA,EACAC,mBAAAA,KAAAA;AAEA,EAAA,MAAMC,OAAAA,GAAUC,iCAAAA,CAAqBJ,MAAAA,EAAQC,SAAAA,EAAWC,mBAAAA,CAAAA;AAExDG,EAAAA,OAAAA,CAAQC,KAAK,iCAAA,EAAmCC,IAAAA,CAAKC,UAAUL,OAAAA,EAAS,IAAA,EAAM,CAAA,CAAA,CAAA;AAC9EM,EAAAA,cAAAA,CAAOC,KAAAA,CAAMH,IAAAA,CAAKC,SAAAA,CAAUL,OAAAA,CAAAA,CAAAA;AAChC,CAAA,EATwC,0BAAA","file":"25W5MXEX.cjs","sourcesContent":["import { stdout } from 'node:process';\n\nimport type { Image, VersionCombination } from '../config';\nimport { generateGithubMatrix } from './matrix';\n\nexport const runGithubMatrixGenerator = async (\n images: Record<string, Image>,\n directory: string,\n versionCombinations?: VersionCombination<string>[],\n): Promise<void> => {\n const entries = generateGithubMatrix(images, directory, versionCombinations);\n\n console.warn('GitHub Action matrix generated:', JSON.stringify(entries, null, 2));\n stdout.write(JSON.stringify(entries));\n};\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
3
|
+
var HOQEVWFL_cjs = require('./HOQEVWFL.cjs');
|
|
4
|
+
var _56KN6KX2_cjs = require('./56KN6KX2.cjs');
|
|
5
|
+
var RVRC4KBY_cjs = require('./RVRC4KBY.cjs');
|
|
6
|
+
var _4BP4CCPZ_cjs = require('./4BP4CCPZ.cjs');
|
|
7
|
+
var KHVGLVR5_cjs = require('./KHVGLVR5.cjs');
|
|
8
8
|
var commander = require('commander');
|
|
9
9
|
var esToolkit = require('es-toolkit');
|
|
10
10
|
var fs = require('fs');
|
|
@@ -18,14 +18,14 @@ var path__default = /*#__PURE__*/_interopDefault(path);
|
|
|
18
18
|
var process__default = /*#__PURE__*/_interopDefault(process);
|
|
19
19
|
|
|
20
20
|
// src/cli.ts
|
|
21
|
-
|
|
22
|
-
var createCli = /* @__PURE__ */
|
|
21
|
+
KHVGLVR5_cjs.init_cjs_shims();
|
|
22
|
+
var createCli = /* @__PURE__ */ KHVGLVR5_cjs.__name((context, registerExtraCommands) => {
|
|
23
23
|
const { tools } = context;
|
|
24
24
|
const toolVersionOptions = Object.fromEntries(tools.map(({ name }) => [
|
|
25
25
|
`${esToolkit.camelCase(name)}Version`,
|
|
26
26
|
name
|
|
27
27
|
]));
|
|
28
|
-
const parseGlobalOptions = /* @__PURE__ */
|
|
28
|
+
const parseGlobalOptions = /* @__PURE__ */ KHVGLVR5_cjs.__name(async (command) => {
|
|
29
29
|
const { cwd, volume, defaultVolumes, ...options } = command.opts();
|
|
30
30
|
const resolvedCwd = cwd ?? process__default.default.cwd();
|
|
31
31
|
const cliVersions = Object.fromEntries(Object.entries(options).map(([name, version]) => [
|
|
@@ -48,7 +48,7 @@ var createCli = /* @__PURE__ */ _24WEKBY3_cjs.__name((context, registerExtraComm
|
|
|
48
48
|
const program = new commander.Command();
|
|
49
49
|
program.name("lz-tool").description("\u{1F680} LayerZero VM tooling with intelligent version management\n\nUsage pattern:\n lz-tool [global-options] <tool> [tool-args...]\n\nExamples:\n lz-tool -e bash sui --help\n lz-tool --sui-version 1.38.0 sui client\n\nNote: All lz-tool options must appear BEFORE the tool name.").version("1.0.0").enablePositionalOptions();
|
|
50
50
|
if (process__default.default.argv.includes("--list-versions")) {
|
|
51
|
-
|
|
51
|
+
HOQEVWFL_cjs.displayVersionCombinations(context);
|
|
52
52
|
process__default.default.exit(0);
|
|
53
53
|
}
|
|
54
54
|
program.option("-c, --cwd <path>", "Current working directory", (input) => {
|
|
@@ -98,7 +98,7 @@ var createCli = /* @__PURE__ */ _24WEKBY3_cjs.__name((context, registerExtraComm
|
|
|
98
98
|
}
|
|
99
99
|
return [
|
|
100
100
|
...volumes,
|
|
101
|
-
|
|
101
|
+
RVRC4KBY_cjs.volumeMappingSchema.parse({
|
|
102
102
|
type,
|
|
103
103
|
hostPath,
|
|
104
104
|
containerPath,
|
|
@@ -110,23 +110,23 @@ var createCli = /* @__PURE__ */ _24WEKBY3_cjs.__name((context, registerExtraComm
|
|
|
110
110
|
value
|
|
111
111
|
], []).option("--no-default-volumes", "Disable default volumes for the tool");
|
|
112
112
|
for (const tool of tools) {
|
|
113
|
-
const defaultVersion =
|
|
114
|
-
const supportedVersions =
|
|
113
|
+
const defaultVersion = _4BP4CCPZ_cjs.getToolDefaultVersion(context, tool.name);
|
|
114
|
+
const supportedVersions = _4BP4CCPZ_cjs.getToolSupportedVersions(context, tool.name);
|
|
115
115
|
program.option(`--${tool.name}-version <version>`, `Specify ${tool.name} version (default: ${defaultVersion}, supported: ${supportedVersions.join(", ")})`);
|
|
116
116
|
}
|
|
117
117
|
program.option("--list-versions", "Display all supported version combinations and exit");
|
|
118
|
-
program.command("version-info <tool>").description("Display detailed version information for a specific tool").action((toolName) =>
|
|
118
|
+
program.command("version-info <tool>").description("Display detailed version information for a specific tool").action((toolName) => HOQEVWFL_cjs.displayToolVersionInfo(context, toolName));
|
|
119
119
|
for (const tool of tools) {
|
|
120
120
|
program.command(tool.name, {
|
|
121
121
|
isDefault: false
|
|
122
122
|
}).description(`Run ${tool.name} with version checking`).passThroughOptions(true).allowUnknownOption().helpOption(false).argument("[args...]", "Arguments to pass to the tool").action(async (args) => {
|
|
123
|
-
await
|
|
123
|
+
await _56KN6KX2_cjs.executeToolCommand(context, tool.name, args, await parseGlobalOptions(program));
|
|
124
124
|
});
|
|
125
125
|
}
|
|
126
126
|
registerExtraCommands?.(program, parseGlobalOptions);
|
|
127
127
|
return program;
|
|
128
128
|
}, "createCli");
|
|
129
|
-
var runCli = /* @__PURE__ */
|
|
129
|
+
var runCli = /* @__PURE__ */ KHVGLVR5_cjs.__name(async (config, registerExtraCommands) => {
|
|
130
130
|
try {
|
|
131
131
|
await createCli(config, registerExtraCommands).parseAsync();
|
|
132
132
|
} catch (error) {
|
|
@@ -136,5 +136,5 @@ var runCli = /* @__PURE__ */ _24WEKBY3_cjs.__name(async (config, registerExtraCo
|
|
|
136
136
|
}, "runCli");
|
|
137
137
|
|
|
138
138
|
exports.runCli = runCli;
|
|
139
|
-
//# sourceMappingURL=
|
|
140
|
-
//# sourceMappingURL=
|
|
139
|
+
//# sourceMappingURL=2JEGETUJ.cjs.map
|
|
140
|
+
//# sourceMappingURL=2JEGETUJ.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts"],"names":["init_cjs_shims","createCli","__name","context","registerExtraCommands","tools","toolVersionOptions","Object","fromEntries","map","name","camelCase","parseGlobalOptions","command","cwd","volume","defaultVolumes","options","opts","resolvedCwd","process","cliVersions","entries","version","filter","tool","configVersions","getDefaultVersions","versions","volumes","defaultVolumesEnabled","program","Command","description","enablePositionalOptions","argv","includes","displayVersionCombinations","exit","option","input","Error","path","isAbsolute","fs","existsSync","statSync","isDirectory","variables","valueParts","split","length","value","join","type","hostPath","containerPath","volumeMappingSchema","parse","previous","defaultVersion","getToolDefaultVersion","supportedVersions","getToolSupportedVersions","action","toolName","displayToolVersionInfo","isDefault","passThroughOptions","allowUnknownOption","helpOption","argument","args","executeToolCommand","runCli","config","parseAsync","error","console"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAAA,4BAAA,EAAA;AA6BA,IAAMC,SAAAA,mBAAYC,oBAAA,CAAA,CACdC,OAAAA,EACAC,qBAAAA,KAAAA;AAEA,EAAA,MAAM,EAAEC,OAAK,GAAKF,OAAAA;AAClB,EAAA,MAAMG,kBAAAA,GAAqBC,OAAOC,WAAAA,CAC9BH,KAAAA,CAAMI,IAAI,CAAC,EAAEC,MAAI,KAAO;IAAC,CAAA,EAAGC,mBAAAA,CAAUD,IAAAA,CAAAA,CAAAA,OAAAA,CAAAA;AAAgBA,IAAAA;GAAK,CAAA,CAAA;AAG/D,EAAA,MAAME,kBAAAA,+CAA4BC,OAAAA,KAAAA;AAC9B,IAAA,MAAM,EAAEC,KAAKC,MAAAA,EAAQC,cAAAA,EAAgB,GAAGC,OAAAA,EAAAA,GAAYJ,QAAQK,IAAAA,EAAI;AAChE,IAAA,MAAMC,WAAAA,GAAcL,GAAAA,IAAOM,wBAAAA,CAAQN,GAAAA,EAAG;AAGtC,IAAA,MAAMO,WAAAA,GAAcd,MAAAA,CAAOC,WAAAA,CACvBD,MAAAA,CAAOe,OAAAA,CAAQL,OAAAA,CAAAA,CACVR,GAAAA,CAAI,CAAC,CAACC,IAAAA,EAAMa,OAAAA,CAAAA,KAAa;AAACjB,MAAAA,kBAAAA,CAAmBI,IAAAA,CAAAA;AAAOa,MAAAA;AAAQ,KAAA,CAAA,CAC5DC,OAAO,CAAC,CAACC,IAAAA,CAAAA,KAAUA,IAAAA,CAAAA,CAAAA;AAI5B,IAAA,MAAMC,iBAAkB,MAAMvB,OAAAA,CAAQwB,kBAAAA,GAAqBR,WAAAA,KAAiB,EAAC;AAC7E,IAAA,MAAMS,QAAAA,GAAW;MAAE,GAAGF,cAAAA;MAAgB,GAAGL;AAAY,KAAA;AAErD,IAAA,OAAO;MACH,GAAGJ,OAAAA;MACHH,GAAAA,EAAKK,WAAAA;MACLU,OAAAA,EAASd,MAAAA;AACTa,MAAAA,QAAAA;MACAE,qBAAAA,EAAuBd;AAC3B,KAAA;EACJ,CAAA,EAtB2B,oBAAA,CAAA;AAwB3B,EAAA,MAAMe,OAAAA,GAAU,IAAIC,iBAAAA,EAAAA;AAEpBD,EAAAA,OAAAA,CACKrB,IAAAA,CAAK,SAAA,CAAA,CACLuB,WAAAA,CACG,6RASI,CAAA,CAEPV,OAAAA,CAAQ,OAAA,CAAA,CACRW,uBAAAA,EAAuB;AAG5B,EAAA,IAAId,wBAAAA,CAAQe,IAAAA,CAAKC,QAAAA,CAAS,iBAAA,CAAA,EAAoB;AAC1CC,IAAAA,uCAAAA,CAA2BlC,OAAAA,CAAAA;AAC3BiB,IAAAA,wBAAAA,CAAQkB,KAAK,CAAA,CAAA;AACjB,EAAA;AAGAP,EAAAA,OAAAA,CACKQ,MAAAA,CAAO,kBAAA,EAAoB,2BAAA,EAA6B,CAACC,KAAAA,KAAAA;AACtD,IAAA,IAAI,OAAOA,UAAU,QAAA,EAAU;AAC3B,MAAA,MAAM,IAAIC,MAAM,2BAAA,CAAA;AACpB,IAAA;AAEA,IAAA,IAAI,CAACC,qBAAAA,CAAKC,UAAAA,CAAWH,KAAAA,CAAAA,EAAQ;AACzB,MAAA,MAAM,IAAIC,MAAM,0CAAA,CAAA;AACpB,IAAA;AAEA,IAAA,IAAI,CAACG,mBAAAA,CAAGC,UAAAA,CAAWL,KAAAA,CAAAA,EAAQ;AACvB,MAAA,MAAM,IAAIC,MAAM,oBAAA,CAAA;AACpB,IAAA;AAEA,IAAA,IAAI,CAACG,mBAAAA,CAAGE,QAAAA,CAASN,KAAAA,CAAAA,CAAOO,aAAW,EAAI;AACnC,MAAA,MAAM,IAAIN,MAAM,yBAAA,CAAA;AACpB,IAAA;AAEA,IAAA,OAAOD,KAAAA;AACX,EAAA,CAAA,CAAA,CACCD,MAAAA,CACG,sCAAA,EACA,qDAAA,EAEHA,MAAAA,CACG,mBAAA,EACA,0GAAA,CAAA,CAEHA,MAAAA,CACG,oBAAA,EACA,kFAAA,EACA,CAACC,OAAeQ,SAAAA,KAAAA;AACZ,IAAA,MAAM,CAACtC,IAAAA,EAAM,GAAGuC,UAAAA,CAAAA,GAAcT,KAAAA,CAAMU,MAAM,GAAA,CAAA;AAE1C,IAAA,IAAI,CAACxC,IAAAA,IAAQ,CAACuC,UAAAA,CAAWE,MAAAA,EAAQ;AAC7B,MAAA,MAAM,IAAIV,KAAAA,CACN,CAAA,qCAAA,EAAwCD,KAAAA,CAAAA,sBAAAA,CAA6B,CAAA;AAE7E,IAAA;AAEA,IAAA,OAAO;AAAIQ,MAAAA,GAAAA,SAAAA;AAAW,MAAA;AAAEtC,QAAAA,IAAAA;QAAM0C,KAAAA,EAAOH,UAAAA,CAAWI,KAAK,GAAA;AAAK;;EAC9D,CAAA,EACA,EAAE,CAAA,CAELd,MAAAA,CACG,qDACA,iJAAA,EACA,CAACC,OAAeX,OAAAA,KAAAA;AACZ,IAAA,MAAM,CAACyB,MAAMC,QAAAA,EAAUC,aAAAA,EAAe9C,IAAAA,CAAAA,GAAQ8B,KAAAA,CAAMU,MAAM,GAAA,CAAA;AAE1D,IAAA,QAAQI,IAAAA;MACJ,KAAK,MAAA;AACD,QAAA,IAAI,CAACC,QAAAA,EAAU;AACX,UAAA,MAAM,IAAId,MAAM,CAAA,4CAAA,CAA8C,CAAA;AAClE,QAAA;AACA,QAAA;MACJ,KAAK,SAAA;AACD,QAAA,IAAI,CAAC/B,IAAAA,EAAM;AACP,UAAA,MAAM,IAAI+B,MAAM,CAAA,0CAAA,CAA4C,CAAA;AAChE,QAAA;AACA,QAAA;AACJ,MAAA;AACI,QAAA,MAAM,IAAIA,KAAAA,CAAM,CAAA,qBAAA,EAAwBa,IAAAA,CAAAA,CAAM,CAAA;AACtD;AAEA,IAAA,IAAI,CAACE,aAAAA,EAAe;AAChB,MAAA,MAAM,IAAIf,MAAM,CAAA,0BAAA,CAA4B,CAAA;AAChD,IAAA;AAEA,IAAA,OAAO;AACAZ,MAAAA,GAAAA,OAAAA;AACH4B,MAAAA,iCAAAA,CAAoBC,KAAAA,CAAM;AAAEJ,QAAAA,IAAAA;AAAMC,QAAAA,QAAAA;AAAUC,QAAAA,aAAAA;AAAe9C,QAAAA;OAAK;;EAExE,CAAA,EACA,EAAE,CAAA,CAEL6B,MAAAA,CACG,4CACA,wDAAA,EACA,CAACa,OAAeO,QAAAA,KAAuB;AAAIA,IAAAA,GAAAA,QAAAA;AAAUP,IAAAA;AACrD,GAAA,EAAA,EAAE,CAAA,CAELb,MAAAA,CAAO,sBAAA,EAAwB,sCAAA,CAAA;AAGpC,EAAA,KAAA,MAAWd,QAAQpB,KAAAA,EAAO;AACtB,IAAA,MAAMuD,cAAAA,GAAiBC,mCAAAA,CAAsB1D,OAAAA,EAASsB,IAAAA,CAAKf,IAAI,CAAA;AAC/D,IAAA,MAAMoD,iBAAAA,GAAoBC,sCAAAA,CAAyB5D,OAAAA,EAASsB,IAAAA,CAAKf,IAAI,CAAA;AAErEqB,IAAAA,OAAAA,CAAQQ,MAAAA,CACJ,CAAA,EAAA,EAAKd,IAAAA,CAAKf,IAAI,sBACd,CAAA,QAAA,EAAWe,IAAAA,CAAKf,IAAI,CAAA,mBAAA,EAAsBkD,cAAAA,CAAAA,aAAAA,EAA8BE,iBAAAA,CAAkBT,IAAAA,CAAK,IAAA,CAAA,CAAA,CAAA,CAAQ,CAAA;AAE/G,EAAA;AAGAtB,EAAAA,OAAAA,CAAQQ,MAAAA,CAAO,mBAAmB,qDAAA,CAAA;AAGlCR,EAAAA,OAAAA,CACKlB,OAAAA,CAAQ,qBAAA,CAAA,CACRoB,WAAAA,CAAY,0DAAA,CAAA,CACZ+B,MAAAA,CAAO,CAACC,QAAAA,KAAqBC,mCAAAA,CAAuB/D,OAAAA,EAAS8D,QAAAA,CAAAA,CAAAA;AAElE,EAAA,KAAA,MAAWxC,QAAQpB,KAAAA,EAAO;AAGtB0B,IAAAA,OAAAA,CACKlB,OAAAA,CAAQY,KAAKf,IAAAA,EAAM;MAAEyD,SAAAA,EAAW;KAAM,CAAA,CACtClC,YAAY,CAAA,IAAA,EAAOR,IAAAA,CAAKf,IAAI,CAAA,sBAAA,CAAwB,CAAA,CACpD0D,mBAAmB,IAAA,CAAA,CACnBC,oBAAkB,CAClBC,UAAAA,CAAW,KAAA,CAAA,CACXC,QAAAA,CAAS,aAAa,+BAAA,CAAA,CACtBP,MAAAA,CAAO,OAAOQ,IAAAA,KAAAA;AACX,MAAA,MAAMC,+BAAAA,CACFtE,SACAsB,IAAAA,CAAKf,IAAAA,EACL8D,MACA,MAAM5D,kBAAAA,CAAmBmB,OAAAA,CAAAA,CAAAA;IAEjC,CAAA,CAAA;AACR,EAAA;AAGA3B,EAAAA,qBAAAA,GAAwB2B,SAASnB,kBAAAA,CAAAA;AAEjC,EAAA,OAAOmB,OAAAA;AACX,CAAA,EA3LkB,WAAA,CAAA;AA6LX,IAAM2C,MAAAA,mBAASxE,oBAAA,CAAA,OAClByE,MAAAA,EACAvE,qBAAAA,KAAAA;AAEA,EAAA,IAAI;AACA,IAAA,MAAMH,SAAAA,CAAoB0E,MAAAA,EAAQvE,qBAAAA,CAAAA,CAAuBwE,UAAAA,EAAU;AACvE,EAAA,CAAA,CAAA,OAASC,KAAAA,EAAO;AACZC,IAAAA,OAAAA,CAAQD,KAAAA,CAAM,mCAA8BA,KAAAA,CAAAA;AAC5CzD,IAAAA,wBAAAA,CAAQkB,KAAK,CAAA,CAAA;AACjB,EAAA;AACJ,CAAA,EAVsB,QAAA","file":"QIYLVNDK.cjs","sourcesContent":["import { Command } from 'commander';\nimport { camelCase } from 'es-toolkit';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\n\nimport type { EnvironmentVariable, VolumeMapping } from './config';\nimport { volumeMappingSchema } from './config';\nimport type { ChainContext } from './context';\nimport type { ToolCommandExecutionOptions } from './core';\nimport { executeToolCommand } from './core';\nimport { displayToolVersionInfo, displayVersionCombinations } from './display';\nimport { getToolDefaultVersion, getToolSupportedVersions } from './utils/finder';\n\ninterface GlobalOptions {\n cwd?: string;\n volume: VolumeMapping[];\n env: EnvironmentVariable[];\n publish?: string[];\n script?: string;\n customEntrypoint?: string;\n defaultVolumes: boolean;\n}\n\ntype RegisterExtraCommands = (\n program: Command,\n parseGlobalOptions: (command: Command) => Promise<ToolCommandExecutionOptions>,\n) => void;\n\nconst createCli = <TImageId extends string>(\n context: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Command => {\n const { tools } = context;\n const toolVersionOptions = Object.fromEntries(\n tools.map(({ name }) => [`${camelCase(name)}Version`, name]),\n );\n\n const parseGlobalOptions = async (command: Command): Promise<ToolCommandExecutionOptions> => {\n const { cwd, volume, defaultVolumes, ...options } = command.opts<GlobalOptions>();\n const resolvedCwd = cwd ?? process.cwd();\n\n // CLI flags take precedence over project config versions\n const cliVersions = Object.fromEntries(\n Object.entries(options)\n .map(([name, version]) => [toolVersionOptions[name], version])\n .filter(([tool]) => tool),\n );\n\n // Read defaults from project config (e.g., Anchor.toml) if the chain provides a hook\n const configVersions = (await context.getDefaultVersions?.(resolvedCwd)) ?? {};\n const versions = { ...configVersions, ...cliVersions };\n\n return {\n ...options,\n cwd: resolvedCwd,\n volumes: volume,\n versions,\n defaultVolumesEnabled: defaultVolumes,\n };\n };\n\n const program = new Command();\n\n program\n .name('lz-tool')\n .description(\n '🚀 LayerZero VM tooling with intelligent version management\\n' +\n '\\n' +\n 'Usage pattern:\\n' +\n ' lz-tool [global-options] <tool> [tool-args...]\\n' +\n '\\n' +\n 'Examples:\\n' +\n ' lz-tool -e bash sui --help\\n' +\n ' lz-tool --sui-version 1.38.0 sui client\\n' +\n '\\n' +\n 'Note: All lz-tool options must appear BEFORE the tool name.',\n )\n .version('1.0.0')\n .enablePositionalOptions(); // Required for passThroughOptions to work\n\n // Check for --list-versions before parsing to avoid help display\n if (process.argv.includes('--list-versions')) {\n displayVersionCombinations(context);\n process.exit(0);\n }\n\n // Add global options.\n program\n .option('-c, --cwd <path>', 'Current working directory', (input: string) => {\n if (typeof input !== 'string') {\n throw new Error('cwd flag must be a string');\n }\n\n if (!path.isAbsolute(input)) {\n throw new Error('cwd must be an absolute path if provided');\n }\n\n if (!fs.existsSync(input)) {\n throw new Error('cwd does not exist');\n }\n\n if (!fs.statSync(input).isDirectory()) {\n throw new Error('cwd must be a directory');\n }\n\n return input;\n })\n .option(\n '-e, --custom-entrypoint <entrypoint>',\n 'Override the default Docker entrypoint for the tool',\n )\n .option(\n '--script <script>',\n 'Execute a custom script using bash -c in the Docker container (e.g., --script \"npm install && npm test\")',\n )\n .option(\n '--env <name=value>',\n 'Set environment variables for Docker container (e.g., --env NODE_ENV=production)',\n (input: string, variables: EnvironmentVariable[]) => {\n const [name, ...valueParts] = input.split('=');\n\n if (!name || !valueParts.length) {\n throw new Error(\n `Invalid environment variable format: ${input}. Use --env NAME=VALUE`,\n );\n }\n\n return [...variables, { name, value: valueParts.join('=') }];\n },\n [],\n )\n .option(\n '-v, --volume <type:hostPath:containerPath[:name]>',\n 'Volume mappings in the format type:hostPath:containerPath[:name] (e.g., host:/host/path:/container/path or isolate::/container/path:volumeName)',\n (input: string, volumes: VolumeMapping[]) => {\n const [type, hostPath, containerPath, name] = input.split(':');\n\n switch (type) {\n case 'host':\n if (!hostPath) {\n throw new Error(`Host path is required for volume type 'host'`);\n }\n break;\n case 'isolate':\n if (!name) {\n throw new Error(`Name is required for volume type 'isolate'`);\n }\n break;\n default:\n throw new Error(`Invalid volume type: ${type}`);\n }\n\n if (!containerPath) {\n throw new Error(`Container path is required`);\n }\n\n return [\n ...volumes,\n volumeMappingSchema.parse({ type, hostPath, containerPath, name }),\n ];\n },\n [],\n )\n .option(\n '-p, --publish <host_port:container_port>',\n \"Publish a container's port(s) to the host (repeatable)\",\n (value: string, previous: string[]) => [...previous, value],\n [],\n )\n .option('--no-default-volumes', 'Disable default volumes for the tool');\n\n // Add version options for each tool dynamically\n for (const tool of tools) {\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n program.option(\n `--${tool.name}-version <version>`,\n `Specify ${tool.name} version (default: ${defaultVersion}, supported: ${supportedVersions.join(', ')})`,\n );\n }\n\n // Add utility options\n program.option('--list-versions', 'Display all supported version combinations and exit');\n\n // Add version info command\n program\n .command('version-info <tool>')\n .description('Display detailed version information for a specific tool')\n .action((toolName: string) => displayToolVersionInfo(context, toolName));\n\n for (const tool of tools) {\n // Don't add any options to the subcommand level.\n // All lz-tool options must be specified before the subcommand.\n program\n .command(tool.name, { isDefault: false })\n .description(`Run ${tool.name} with version checking`)\n .passThroughOptions(true) // Pass through all options after the subcommand\n .allowUnknownOption()\n .helpOption(false) // Disable automatic help option to pass --help to the tool\n .argument('[args...]', 'Arguments to pass to the tool')\n .action(async (args: string[]) => {\n await executeToolCommand(\n context,\n tool.name,\n args,\n await parseGlobalOptions(program),\n );\n });\n }\n\n // Allow external registration of extra commands\n registerExtraCommands?.(program, parseGlobalOptions);\n\n return program;\n};\n\nexport const runCli = async <TImageId extends string>(\n config: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Promise<void> => {\n try {\n await createCli<TImageId>(config, registerExtraCommands).parseAsync();\n } catch (error) {\n console.error('❌ VM tool execution failed', error);\n process.exit(1);\n }\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts"],"names":["init_cjs_shims","createCli","__name","context","registerExtraCommands","tools","toolVersionOptions","Object","fromEntries","map","name","camelCase","parseGlobalOptions","command","cwd","volume","defaultVolumes","options","opts","resolvedCwd","process","cliVersions","entries","version","filter","tool","configVersions","getDefaultVersions","versions","volumes","defaultVolumesEnabled","program","Command","description","enablePositionalOptions","argv","includes","displayVersionCombinations","exit","option","input","Error","path","isAbsolute","fs","existsSync","statSync","isDirectory","variables","valueParts","split","length","value","join","type","hostPath","containerPath","volumeMappingSchema","parse","previous","defaultVersion","getToolDefaultVersion","supportedVersions","getToolSupportedVersions","action","toolName","displayToolVersionInfo","isDefault","passThroughOptions","allowUnknownOption","helpOption","argument","args","executeToolCommand","runCli","config","parseAsync","error","console"],"mappings":"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","file":"2JEGETUJ.cjs","sourcesContent":["import { Command } from 'commander';\nimport { camelCase } from 'es-toolkit';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\n\nimport type { EnvironmentVariable, VolumeMapping } from './config';\nimport { volumeMappingSchema } from './config';\nimport type { ChainContext } from './context';\nimport type { ToolCommandExecutionOptions } from './core';\nimport { executeToolCommand } from './core';\nimport { displayToolVersionInfo, displayVersionCombinations } from './display';\nimport { getToolDefaultVersion, getToolSupportedVersions } from './utils/finder';\n\ninterface GlobalOptions {\n cwd?: string;\n volume: VolumeMapping[];\n env: EnvironmentVariable[];\n publish?: string[];\n script?: string;\n customEntrypoint?: string;\n defaultVolumes: boolean;\n}\n\ntype RegisterExtraCommands = (\n program: Command,\n parseGlobalOptions: (command: Command) => Promise<ToolCommandExecutionOptions>,\n) => void;\n\nconst createCli = <TImageId extends string>(\n context: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Command => {\n const { tools } = context;\n const toolVersionOptions = Object.fromEntries(\n tools.map(({ name }) => [`${camelCase(name)}Version`, name]),\n );\n\n const parseGlobalOptions = async (command: Command): Promise<ToolCommandExecutionOptions> => {\n const { cwd, volume, defaultVolumes, ...options } = command.opts<GlobalOptions>();\n const resolvedCwd = cwd ?? process.cwd();\n\n // CLI flags take precedence over project config versions\n const cliVersions = Object.fromEntries(\n Object.entries(options)\n .map(([name, version]) => [toolVersionOptions[name], version])\n .filter(([tool]) => tool),\n );\n\n // Read defaults from project config (e.g., Anchor.toml) if the chain provides a hook\n const configVersions = (await context.getDefaultVersions?.(resolvedCwd)) ?? {};\n const versions = { ...configVersions, ...cliVersions };\n\n return {\n ...options,\n cwd: resolvedCwd,\n volumes: volume,\n versions,\n defaultVolumesEnabled: defaultVolumes,\n };\n };\n\n const program = new Command();\n\n program\n .name('lz-tool')\n .description(\n '🚀 LayerZero VM tooling with intelligent version management\\n' +\n '\\n' +\n 'Usage pattern:\\n' +\n ' lz-tool [global-options] <tool> [tool-args...]\\n' +\n '\\n' +\n 'Examples:\\n' +\n ' lz-tool -e bash sui --help\\n' +\n ' lz-tool --sui-version 1.38.0 sui client\\n' +\n '\\n' +\n 'Note: All lz-tool options must appear BEFORE the tool name.',\n )\n .version('1.0.0')\n .enablePositionalOptions(); // Required for passThroughOptions to work\n\n // Check for --list-versions before parsing to avoid help display\n if (process.argv.includes('--list-versions')) {\n displayVersionCombinations(context);\n process.exit(0);\n }\n\n // Add global options.\n program\n .option('-c, --cwd <path>', 'Current working directory', (input: string) => {\n if (typeof input !== 'string') {\n throw new Error('cwd flag must be a string');\n }\n\n if (!path.isAbsolute(input)) {\n throw new Error('cwd must be an absolute path if provided');\n }\n\n if (!fs.existsSync(input)) {\n throw new Error('cwd does not exist');\n }\n\n if (!fs.statSync(input).isDirectory()) {\n throw new Error('cwd must be a directory');\n }\n\n return input;\n })\n .option(\n '-e, --custom-entrypoint <entrypoint>',\n 'Override the default Docker entrypoint for the tool',\n )\n .option(\n '--script <script>',\n 'Execute a custom script using bash -c in the Docker container (e.g., --script \"npm install && npm test\")',\n )\n .option(\n '--env <name=value>',\n 'Set environment variables for Docker container (e.g., --env NODE_ENV=production)',\n (input: string, variables: EnvironmentVariable[]) => {\n const [name, ...valueParts] = input.split('=');\n\n if (!name || !valueParts.length) {\n throw new Error(\n `Invalid environment variable format: ${input}. Use --env NAME=VALUE`,\n );\n }\n\n return [...variables, { name, value: valueParts.join('=') }];\n },\n [],\n )\n .option(\n '-v, --volume <type:hostPath:containerPath[:name]>',\n 'Volume mappings in the format type:hostPath:containerPath[:name] (e.g., host:/host/path:/container/path or isolate::/container/path:volumeName)',\n (input: string, volumes: VolumeMapping[]) => {\n const [type, hostPath, containerPath, name] = input.split(':');\n\n switch (type) {\n case 'host':\n if (!hostPath) {\n throw new Error(`Host path is required for volume type 'host'`);\n }\n break;\n case 'isolate':\n if (!name) {\n throw new Error(`Name is required for volume type 'isolate'`);\n }\n break;\n default:\n throw new Error(`Invalid volume type: ${type}`);\n }\n\n if (!containerPath) {\n throw new Error(`Container path is required`);\n }\n\n return [\n ...volumes,\n volumeMappingSchema.parse({ type, hostPath, containerPath, name }),\n ];\n },\n [],\n )\n .option(\n '-p, --publish <host_port:container_port>',\n \"Publish a container's port(s) to the host (repeatable)\",\n (value: string, previous: string[]) => [...previous, value],\n [],\n )\n .option('--no-default-volumes', 'Disable default volumes for the tool');\n\n // Add version options for each tool dynamically\n for (const tool of tools) {\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n program.option(\n `--${tool.name}-version <version>`,\n `Specify ${tool.name} version (default: ${defaultVersion}, supported: ${supportedVersions.join(', ')})`,\n );\n }\n\n // Add utility options\n program.option('--list-versions', 'Display all supported version combinations and exit');\n\n // Add version info command\n program\n .command('version-info <tool>')\n .description('Display detailed version information for a specific tool')\n .action((toolName: string) => displayToolVersionInfo(context, toolName));\n\n for (const tool of tools) {\n // Don't add any options to the subcommand level.\n // All lz-tool options must be specified before the subcommand.\n program\n .command(tool.name, { isDefault: false })\n .description(`Run ${tool.name} with version checking`)\n .passThroughOptions(true) // Pass through all options after the subcommand\n .allowUnknownOption()\n .helpOption(false) // Disable automatic help option to pass --help to the tool\n .argument('[args...]', 'Arguments to pass to the tool')\n .action(async (args: string[]) => {\n await executeToolCommand(\n context,\n tool.name,\n args,\n await parseGlobalOptions(program),\n );\n });\n }\n\n // Allow external registration of extra commands\n registerExtraCommands?.(program, parseGlobalOptions);\n\n return program;\n};\n\nexport const runCli = async <TImageId extends string>(\n config: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Promise<void> => {\n try {\n await createCli<TImageId>(config, registerExtraCommands).parseAsync();\n } catch (error) {\n console.error('❌ VM tool execution failed', error);\n process.exit(1);\n }\n};\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { init_esm_shims, __name } from './
|
|
1
|
+
import { init_esm_shims, __name } from './CWKWODSW.js';
|
|
2
2
|
|
|
3
3
|
// src/utils/error.ts
|
|
4
4
|
init_esm_shims();
|
|
5
5
|
var stringifyError = /* @__PURE__ */ __name((error) => error instanceof Error ? error.message : String(error), "stringifyError");
|
|
6
6
|
|
|
7
7
|
export { stringifyError };
|
|
8
|
-
//# sourceMappingURL=
|
|
9
|
-
//# sourceMappingURL=
|
|
8
|
+
//# sourceMappingURL=2XGBQPKA.js.map
|
|
9
|
+
//# sourceMappingURL=2XGBQPKA.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/error.ts"],"names":["stringifyError","error","Error","message","String"],"mappings":";;;AAAA,cAAA,EAAA;AAAO,IAAMA,cAAAA,2BAAkBC,KAAAA,KAC3BA,KAAAA,YAAiBC,QAAQD,KAAAA,CAAME,OAAAA,GAAUC,MAAAA,CAAOH,KAAAA,CAAAA,EADtB,gBAAA","file":"
|
|
1
|
+
{"version":3,"sources":["../src/utils/error.ts"],"names":["stringifyError","error","Error","message","String"],"mappings":";;;AAAA,cAAA,EAAA;AAAO,IAAMA,cAAAA,2BAAkBC,KAAAA,KAC3BA,KAAAA,YAAiBC,QAAQD,KAAAA,CAAME,OAAAA,GAAUC,MAAAA,CAAOH,KAAAA,CAAAA,EADtB,gBAAA","file":"2XGBQPKA.js","sourcesContent":["export const stringifyError = (error: unknown): string =>\n error instanceof Error ? error.message : String(error);\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { displayVersionCombinations, displayToolVersionInfo } from './
|
|
2
|
-
import { executeToolCommand } from './
|
|
3
|
-
import { volumeMappingSchema } from './
|
|
4
|
-
import { getToolDefaultVersion, getToolSupportedVersions } from './
|
|
5
|
-
import { init_esm_shims, __name } from './
|
|
1
|
+
import { displayVersionCombinations, displayToolVersionInfo } from './QH3FM6DD.js';
|
|
2
|
+
import { executeToolCommand } from './KHVBCTKK.js';
|
|
3
|
+
import { volumeMappingSchema } from './BJUOU4DR.js';
|
|
4
|
+
import { getToolDefaultVersion, getToolSupportedVersions } from './3XEUJAQB.js';
|
|
5
|
+
import { init_esm_shims, __name } from './CWKWODSW.js';
|
|
6
6
|
import { Command } from 'commander';
|
|
7
7
|
import { camelCase } from 'es-toolkit';
|
|
8
8
|
import fs from 'fs';
|
|
@@ -128,5 +128,5 @@ var runCli = /* @__PURE__ */ __name(async (config, registerExtraCommands) => {
|
|
|
128
128
|
}, "runCli");
|
|
129
129
|
|
|
130
130
|
export { runCli };
|
|
131
|
-
//# sourceMappingURL=
|
|
132
|
-
//# sourceMappingURL=
|
|
131
|
+
//# sourceMappingURL=3I5XNU26.js.map
|
|
132
|
+
//# sourceMappingURL=3I5XNU26.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts"],"names":["createCli","context","registerExtraCommands","tools","toolVersionOptions","Object","fromEntries","map","name","camelCase","parseGlobalOptions","command","cwd","volume","defaultVolumes","options","opts","resolvedCwd","process","cliVersions","entries","version","filter","tool","configVersions","getDefaultVersions","versions","volumes","defaultVolumesEnabled","program","Command","description","enablePositionalOptions","argv","includes","displayVersionCombinations","exit","option","input","Error","path","isAbsolute","fs","existsSync","statSync","isDirectory","variables","valueParts","split","length","value","join","type","hostPath","containerPath","volumeMappingSchema","parse","previous","defaultVersion","getToolDefaultVersion","supportedVersions","getToolSupportedVersions","action","toolName","displayToolVersionInfo","isDefault","passThroughOptions","allowUnknownOption","helpOption","argument","args","executeToolCommand","runCli","config","parseAsync","error","console"],"mappings":"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","file":"6N2O5WLJ.js","sourcesContent":["import { Command } from 'commander';\nimport { camelCase } from 'es-toolkit';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\n\nimport type { EnvironmentVariable, VolumeMapping } from './config';\nimport { volumeMappingSchema } from './config';\nimport type { ChainContext } from './context';\nimport type { ToolCommandExecutionOptions } from './core';\nimport { executeToolCommand } from './core';\nimport { displayToolVersionInfo, displayVersionCombinations } from './display';\nimport { getToolDefaultVersion, getToolSupportedVersions } from './utils/finder';\n\ninterface GlobalOptions {\n cwd?: string;\n volume: VolumeMapping[];\n env: EnvironmentVariable[];\n publish?: string[];\n script?: string;\n customEntrypoint?: string;\n defaultVolumes: boolean;\n}\n\ntype RegisterExtraCommands = (\n program: Command,\n parseGlobalOptions: (command: Command) => Promise<ToolCommandExecutionOptions>,\n) => void;\n\nconst createCli = <TImageId extends string>(\n context: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Command => {\n const { tools } = context;\n const toolVersionOptions = Object.fromEntries(\n tools.map(({ name }) => [`${camelCase(name)}Version`, name]),\n );\n\n const parseGlobalOptions = async (command: Command): Promise<ToolCommandExecutionOptions> => {\n const { cwd, volume, defaultVolumes, ...options } = command.opts<GlobalOptions>();\n const resolvedCwd = cwd ?? process.cwd();\n\n // CLI flags take precedence over project config versions\n const cliVersions = Object.fromEntries(\n Object.entries(options)\n .map(([name, version]) => [toolVersionOptions[name], version])\n .filter(([tool]) => tool),\n );\n\n // Read defaults from project config (e.g., Anchor.toml) if the chain provides a hook\n const configVersions = (await context.getDefaultVersions?.(resolvedCwd)) ?? {};\n const versions = { ...configVersions, ...cliVersions };\n\n return {\n ...options,\n cwd: resolvedCwd,\n volumes: volume,\n versions,\n defaultVolumesEnabled: defaultVolumes,\n };\n };\n\n const program = new Command();\n\n program\n .name('lz-tool')\n .description(\n '🚀 LayerZero VM tooling with intelligent version management\\n' +\n '\\n' +\n 'Usage pattern:\\n' +\n ' lz-tool [global-options] <tool> [tool-args...]\\n' +\n '\\n' +\n 'Examples:\\n' +\n ' lz-tool -e bash sui --help\\n' +\n ' lz-tool --sui-version 1.38.0 sui client\\n' +\n '\\n' +\n 'Note: All lz-tool options must appear BEFORE the tool name.',\n )\n .version('1.0.0')\n .enablePositionalOptions(); // Required for passThroughOptions to work\n\n // Check for --list-versions before parsing to avoid help display\n if (process.argv.includes('--list-versions')) {\n displayVersionCombinations(context);\n process.exit(0);\n }\n\n // Add global options.\n program\n .option('-c, --cwd <path>', 'Current working directory', (input: string) => {\n if (typeof input !== 'string') {\n throw new Error('cwd flag must be a string');\n }\n\n if (!path.isAbsolute(input)) {\n throw new Error('cwd must be an absolute path if provided');\n }\n\n if (!fs.existsSync(input)) {\n throw new Error('cwd does not exist');\n }\n\n if (!fs.statSync(input).isDirectory()) {\n throw new Error('cwd must be a directory');\n }\n\n return input;\n })\n .option(\n '-e, --custom-entrypoint <entrypoint>',\n 'Override the default Docker entrypoint for the tool',\n )\n .option(\n '--script <script>',\n 'Execute a custom script using bash -c in the Docker container (e.g., --script \"npm install && npm test\")',\n )\n .option(\n '--env <name=value>',\n 'Set environment variables for Docker container (e.g., --env NODE_ENV=production)',\n (input: string, variables: EnvironmentVariable[]) => {\n const [name, ...valueParts] = input.split('=');\n\n if (!name || !valueParts.length) {\n throw new Error(\n `Invalid environment variable format: ${input}. Use --env NAME=VALUE`,\n );\n }\n\n return [...variables, { name, value: valueParts.join('=') }];\n },\n [],\n )\n .option(\n '-v, --volume <type:hostPath:containerPath[:name]>',\n 'Volume mappings in the format type:hostPath:containerPath[:name] (e.g., host:/host/path:/container/path or isolate::/container/path:volumeName)',\n (input: string, volumes: VolumeMapping[]) => {\n const [type, hostPath, containerPath, name] = input.split(':');\n\n switch (type) {\n case 'host':\n if (!hostPath) {\n throw new Error(`Host path is required for volume type 'host'`);\n }\n break;\n case 'isolate':\n if (!name) {\n throw new Error(`Name is required for volume type 'isolate'`);\n }\n break;\n default:\n throw new Error(`Invalid volume type: ${type}`);\n }\n\n if (!containerPath) {\n throw new Error(`Container path is required`);\n }\n\n return [\n ...volumes,\n volumeMappingSchema.parse({ type, hostPath, containerPath, name }),\n ];\n },\n [],\n )\n .option(\n '-p, --publish <host_port:container_port>',\n \"Publish a container's port(s) to the host (repeatable)\",\n (value: string, previous: string[]) => [...previous, value],\n [],\n )\n .option('--no-default-volumes', 'Disable default volumes for the tool');\n\n // Add version options for each tool dynamically\n for (const tool of tools) {\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n program.option(\n `--${tool.name}-version <version>`,\n `Specify ${tool.name} version (default: ${defaultVersion}, supported: ${supportedVersions.join(', ')})`,\n );\n }\n\n // Add utility options\n program.option('--list-versions', 'Display all supported version combinations and exit');\n\n // Add version info command\n program\n .command('version-info <tool>')\n .description('Display detailed version information for a specific tool')\n .action((toolName: string) => displayToolVersionInfo(context, toolName));\n\n for (const tool of tools) {\n // Don't add any options to the subcommand level.\n // All lz-tool options must be specified before the subcommand.\n program\n .command(tool.name, { isDefault: false })\n .description(`Run ${tool.name} with version checking`)\n .passThroughOptions(true) // Pass through all options after the subcommand\n .allowUnknownOption()\n .helpOption(false) // Disable automatic help option to pass --help to the tool\n .argument('[args...]', 'Arguments to pass to the tool')\n .action(async (args: string[]) => {\n await executeToolCommand(\n context,\n tool.name,\n args,\n await parseGlobalOptions(program),\n );\n });\n }\n\n // Allow external registration of extra commands\n registerExtraCommands?.(program, parseGlobalOptions);\n\n return program;\n};\n\nexport const runCli = async <TImageId extends string>(\n config: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Promise<void> => {\n try {\n await createCli<TImageId>(config, registerExtraCommands).parseAsync();\n } catch (error) {\n console.error('❌ VM tool execution failed', error);\n process.exit(1);\n }\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts"],"names":["createCli","context","registerExtraCommands","tools","toolVersionOptions","Object","fromEntries","map","name","camelCase","parseGlobalOptions","command","cwd","volume","defaultVolumes","options","opts","resolvedCwd","process","cliVersions","entries","version","filter","tool","configVersions","getDefaultVersions","versions","volumes","defaultVolumesEnabled","program","Command","description","enablePositionalOptions","argv","includes","displayVersionCombinations","exit","option","input","Error","path","isAbsolute","fs","existsSync","statSync","isDirectory","variables","valueParts","split","length","value","join","type","hostPath","containerPath","volumeMappingSchema","parse","previous","defaultVersion","getToolDefaultVersion","supportedVersions","getToolSupportedVersions","action","toolName","displayToolVersionInfo","isDefault","passThroughOptions","allowUnknownOption","helpOption","argument","args","executeToolCommand","runCli","config","parseAsync","error","console"],"mappings":"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","file":"3I5XNU26.js","sourcesContent":["import { Command } from 'commander';\nimport { camelCase } from 'es-toolkit';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\n\nimport type { EnvironmentVariable, VolumeMapping } from './config';\nimport { volumeMappingSchema } from './config';\nimport type { ChainContext } from './context';\nimport type { ToolCommandExecutionOptions } from './core';\nimport { executeToolCommand } from './core';\nimport { displayToolVersionInfo, displayVersionCombinations } from './display';\nimport { getToolDefaultVersion, getToolSupportedVersions } from './utils/finder';\n\ninterface GlobalOptions {\n cwd?: string;\n volume: VolumeMapping[];\n env: EnvironmentVariable[];\n publish?: string[];\n script?: string;\n customEntrypoint?: string;\n defaultVolumes: boolean;\n}\n\ntype RegisterExtraCommands = (\n program: Command,\n parseGlobalOptions: (command: Command) => Promise<ToolCommandExecutionOptions>,\n) => void;\n\nconst createCli = <TImageId extends string>(\n context: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Command => {\n const { tools } = context;\n const toolVersionOptions = Object.fromEntries(\n tools.map(({ name }) => [`${camelCase(name)}Version`, name]),\n );\n\n const parseGlobalOptions = async (command: Command): Promise<ToolCommandExecutionOptions> => {\n const { cwd, volume, defaultVolumes, ...options } = command.opts<GlobalOptions>();\n const resolvedCwd = cwd ?? process.cwd();\n\n // CLI flags take precedence over project config versions\n const cliVersions = Object.fromEntries(\n Object.entries(options)\n .map(([name, version]) => [toolVersionOptions[name], version])\n .filter(([tool]) => tool),\n );\n\n // Read defaults from project config (e.g., Anchor.toml) if the chain provides a hook\n const configVersions = (await context.getDefaultVersions?.(resolvedCwd)) ?? {};\n const versions = { ...configVersions, ...cliVersions };\n\n return {\n ...options,\n cwd: resolvedCwd,\n volumes: volume,\n versions,\n defaultVolumesEnabled: defaultVolumes,\n };\n };\n\n const program = new Command();\n\n program\n .name('lz-tool')\n .description(\n '🚀 LayerZero VM tooling with intelligent version management\\n' +\n '\\n' +\n 'Usage pattern:\\n' +\n ' lz-tool [global-options] <tool> [tool-args...]\\n' +\n '\\n' +\n 'Examples:\\n' +\n ' lz-tool -e bash sui --help\\n' +\n ' lz-tool --sui-version 1.38.0 sui client\\n' +\n '\\n' +\n 'Note: All lz-tool options must appear BEFORE the tool name.',\n )\n .version('1.0.0')\n .enablePositionalOptions(); // Required for passThroughOptions to work\n\n // Check for --list-versions before parsing to avoid help display\n if (process.argv.includes('--list-versions')) {\n displayVersionCombinations(context);\n process.exit(0);\n }\n\n // Add global options.\n program\n .option('-c, --cwd <path>', 'Current working directory', (input: string) => {\n if (typeof input !== 'string') {\n throw new Error('cwd flag must be a string');\n }\n\n if (!path.isAbsolute(input)) {\n throw new Error('cwd must be an absolute path if provided');\n }\n\n if (!fs.existsSync(input)) {\n throw new Error('cwd does not exist');\n }\n\n if (!fs.statSync(input).isDirectory()) {\n throw new Error('cwd must be a directory');\n }\n\n return input;\n })\n .option(\n '-e, --custom-entrypoint <entrypoint>',\n 'Override the default Docker entrypoint for the tool',\n )\n .option(\n '--script <script>',\n 'Execute a custom script using bash -c in the Docker container (e.g., --script \"npm install && npm test\")',\n )\n .option(\n '--env <name=value>',\n 'Set environment variables for Docker container (e.g., --env NODE_ENV=production)',\n (input: string, variables: EnvironmentVariable[]) => {\n const [name, ...valueParts] = input.split('=');\n\n if (!name || !valueParts.length) {\n throw new Error(\n `Invalid environment variable format: ${input}. Use --env NAME=VALUE`,\n );\n }\n\n return [...variables, { name, value: valueParts.join('=') }];\n },\n [],\n )\n .option(\n '-v, --volume <type:hostPath:containerPath[:name]>',\n 'Volume mappings in the format type:hostPath:containerPath[:name] (e.g., host:/host/path:/container/path or isolate::/container/path:volumeName)',\n (input: string, volumes: VolumeMapping[]) => {\n const [type, hostPath, containerPath, name] = input.split(':');\n\n switch (type) {\n case 'host':\n if (!hostPath) {\n throw new Error(`Host path is required for volume type 'host'`);\n }\n break;\n case 'isolate':\n if (!name) {\n throw new Error(`Name is required for volume type 'isolate'`);\n }\n break;\n default:\n throw new Error(`Invalid volume type: ${type}`);\n }\n\n if (!containerPath) {\n throw new Error(`Container path is required`);\n }\n\n return [\n ...volumes,\n volumeMappingSchema.parse({ type, hostPath, containerPath, name }),\n ];\n },\n [],\n )\n .option(\n '-p, --publish <host_port:container_port>',\n \"Publish a container's port(s) to the host (repeatable)\",\n (value: string, previous: string[]) => [...previous, value],\n [],\n )\n .option('--no-default-volumes', 'Disable default volumes for the tool');\n\n // Add version options for each tool dynamically\n for (const tool of tools) {\n const defaultVersion = getToolDefaultVersion(context, tool.name);\n const supportedVersions = getToolSupportedVersions(context, tool.name);\n\n program.option(\n `--${tool.name}-version <version>`,\n `Specify ${tool.name} version (default: ${defaultVersion}, supported: ${supportedVersions.join(', ')})`,\n );\n }\n\n // Add utility options\n program.option('--list-versions', 'Display all supported version combinations and exit');\n\n // Add version info command\n program\n .command('version-info <tool>')\n .description('Display detailed version information for a specific tool')\n .action((toolName: string) => displayToolVersionInfo(context, toolName));\n\n for (const tool of tools) {\n // Don't add any options to the subcommand level.\n // All lz-tool options must be specified before the subcommand.\n program\n .command(tool.name, { isDefault: false })\n .description(`Run ${tool.name} with version checking`)\n .passThroughOptions(true) // Pass through all options after the subcommand\n .allowUnknownOption()\n .helpOption(false) // Disable automatic help option to pass --help to the tool\n .argument('[args...]', 'Arguments to pass to the tool')\n .action(async (args: string[]) => {\n await executeToolCommand(\n context,\n tool.name,\n args,\n await parseGlobalOptions(program),\n );\n });\n }\n\n // Allow external registration of extra commands\n registerExtraCommands?.(program, parseGlobalOptions);\n\n return program;\n};\n\nexport const runCli = async <TImageId extends string>(\n config: ChainContext<TImageId>,\n registerExtraCommands?: RegisterExtraCommands,\n): Promise<void> => {\n try {\n await createCli<TImageId>(config, registerExtraCommands).parseAsync();\n } catch (error) {\n console.error('❌ VM tool execution failed', error);\n process.exit(1);\n }\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { init_esm_shims, __name } from './
|
|
1
|
+
import { init_esm_shims, __name } from './CWKWODSW.js';
|
|
2
2
|
import { isString } from 'es-toolkit';
|
|
3
3
|
|
|
4
4
|
// src/utils/finder.ts
|
|
@@ -38,5 +38,5 @@ var getToolSupportedVersions = /* @__PURE__ */ __name((context, toolName) => [
|
|
|
38
38
|
].sort(), "getToolSupportedVersions");
|
|
39
39
|
|
|
40
40
|
export { findToolByName, findToolVersionsForCombination, getImageName, getToolDefaultVersion, getToolSupportedVersions };
|
|
41
|
-
//# sourceMappingURL=
|
|
42
|
-
//# sourceMappingURL=
|
|
41
|
+
//# sourceMappingURL=3XEUJAQB.js.map
|
|
42
|
+
//# sourceMappingURL=3XEUJAQB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/finder.ts"],"names":["findToolByName","tools","toolName","tool","find","name","Error","getImageName","basename","getToolDefaultVersion","context","combination","versionCombinations","version","findToolVersionsForCombination","console","warn","images","Object","fromEntries","entries","map","imageId","versions","getToolSupportedVersions","Set","filter","isString","sort"],"mappings":";;;;AAAA,cAAA,EAAA;AAMO,IAAMA,cAAAA,mBAAiB,MAAA,CAAA,CAC1B,EAAEC,KAAAA,IACFC,QAAAA,KAAAA;AAEA,EAAA,MAAMC,OAAOF,KAAAA,CAAMG,IAAAA,CAAK,CAACD,KAAAA,KAASA,KAAAA,CAAKE,SAASH,QAAAA,CAAAA;AAEhD,EAAA,IAAI,CAACC,IAAAA,EAAM;AACP,IAAA,MAAM,IAAIG,KAAAA,CAAM,CAAA,MAAA,EAASJ,QAAAA,CAAAA,WAAAA,CAAqB,CAAA;AAClD,EAAA;AAEA,EAAA,OAAOC,IAAAA;AACX,CAAA,EAX8B,gBAAA;AAavB,IAAMI,YAAAA,mBAAe,MAAA,CAAA,CAACC,QAAAA,KAA6B,CAAA,EAAGA,QAAAA,CAAAA,QAAAA,CAAAA,EAAjC,cAAA;AAKrB,IAAMC,qBAAAA,mBAAwB,MAAA,CAAA,CACjCC,OAAAA,EACAR,QAAAA,KAAAA;AAEA,EAAA,MAAMS,WAAAA,GAAcD,OAAAA,CAAQE,mBAAAA,CAAoB,CAAA,CAAA;AAEhD,EAAA,IAAI,CAACD,WAAAA,EAAa;AACd,IAAA,OAAO,IAAA;AACX,EAAA;AAEA,EAAA,MAAME,OAAAA,GAAUC,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,EAAaT,QAAAA,CAAAA;AAErE,EAAA,IAAI,CAACW,OAAAA,EAAS;AACVE,IAAAA,OAAAA,CAAQC,IAAAA,CAAK,CAAA,mCAAA,EAAsCd,QAAAA,CAAAA,WAAAA,CAAqB,CAAA;AACxE,IAAA,OAAO,IAAA;AACX,EAAA;AAEA,EAAA,OAAOW,OAAAA;AACX,CAAA,EAlBqC,uBAAA;AAoB9B,IAAMC,iDAAiC,MAAA,CAAA,CAC1C,EAAEG,QAAM,EACRN,WAAAA,KAEAO,OAAOC,WAAAA,CACHD,MAAAA,CAAOE,OAAAA,CAAQT,WAAAA,CAAYM,MAAM,CAAA,CAAEI,GAAAA,CAAI,CAAC,CAAClB,IAAAA,EAAMmB,OAAAA,CAAAA,KAAQ;AACnD,EAAA,MAAMT,OAAAA,GAAUI,MAAAA,CAAOK,OAAAA,CAAAA,CAASC,SAASpB,IAAAA,CAAAA;AAEzC,EAAA,IAAI,CAACU,OAAAA,EAAS;AACV,IAAA,MAAM,IAAIP,KAAAA,CAAM,CAAA,KAAA,EAAQH,IAAAA,CAAAA,4BAAAA,EAAmCmB,OAAAA,CAAAA,CAAS,CAAA;AACxE,EAAA;AAEA,EAAA,OAAO;AAACnB,IAAAA,IAAAA;AAAMU,IAAAA;;AAClB,CAAA,CAAA,CAAA,EAbsC,gCAAA;AAmBvC,IAAMW,wBAAAA,mBAA2B,MAAA,CAAA,CACpCd,OAAAA,EACAR,QAAAA,KAEA;AACO,EAAA,GAAA,IAAIuB,GAAAA,CACHf,OAAAA,CAAQE,mBAAAA,CACHS,GAAAA,CACG,CAACV,WAAAA,KAAgBG,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,EAAaT,QAAAA,CAAS,CAAA,CAElFwB,MAAAA,CAAOC,QAAAA,CAAAA;AAElBC,CAAAA,CAAAA,IAAAA,EAAI,EAZ8B,0BAAA","file":"
|
|
1
|
+
{"version":3,"sources":["../src/utils/finder.ts"],"names":["findToolByName","tools","toolName","tool","find","name","Error","getImageName","basename","getToolDefaultVersion","context","combination","versionCombinations","version","findToolVersionsForCombination","console","warn","images","Object","fromEntries","entries","map","imageId","versions","getToolSupportedVersions","Set","filter","isString","sort"],"mappings":";;;;AAAA,cAAA,EAAA;AAMO,IAAMA,cAAAA,mBAAiB,MAAA,CAAA,CAC1B,EAAEC,KAAAA,IACFC,QAAAA,KAAAA;AAEA,EAAA,MAAMC,OAAOF,KAAAA,CAAMG,IAAAA,CAAK,CAACD,KAAAA,KAASA,KAAAA,CAAKE,SAASH,QAAAA,CAAAA;AAEhD,EAAA,IAAI,CAACC,IAAAA,EAAM;AACP,IAAA,MAAM,IAAIG,KAAAA,CAAM,CAAA,MAAA,EAASJ,QAAAA,CAAAA,WAAAA,CAAqB,CAAA;AAClD,EAAA;AAEA,EAAA,OAAOC,IAAAA;AACX,CAAA,EAX8B,gBAAA;AAavB,IAAMI,YAAAA,mBAAe,MAAA,CAAA,CAACC,QAAAA,KAA6B,CAAA,EAAGA,QAAAA,CAAAA,QAAAA,CAAAA,EAAjC,cAAA;AAKrB,IAAMC,qBAAAA,mBAAwB,MAAA,CAAA,CACjCC,OAAAA,EACAR,QAAAA,KAAAA;AAEA,EAAA,MAAMS,WAAAA,GAAcD,OAAAA,CAAQE,mBAAAA,CAAoB,CAAA,CAAA;AAEhD,EAAA,IAAI,CAACD,WAAAA,EAAa;AACd,IAAA,OAAO,IAAA;AACX,EAAA;AAEA,EAAA,MAAME,OAAAA,GAAUC,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,EAAaT,QAAAA,CAAAA;AAErE,EAAA,IAAI,CAACW,OAAAA,EAAS;AACVE,IAAAA,OAAAA,CAAQC,IAAAA,CAAK,CAAA,mCAAA,EAAsCd,QAAAA,CAAAA,WAAAA,CAAqB,CAAA;AACxE,IAAA,OAAO,IAAA;AACX,EAAA;AAEA,EAAA,OAAOW,OAAAA;AACX,CAAA,EAlBqC,uBAAA;AAoB9B,IAAMC,iDAAiC,MAAA,CAAA,CAC1C,EAAEG,QAAM,EACRN,WAAAA,KAEAO,OAAOC,WAAAA,CACHD,MAAAA,CAAOE,OAAAA,CAAQT,WAAAA,CAAYM,MAAM,CAAA,CAAEI,GAAAA,CAAI,CAAC,CAAClB,IAAAA,EAAMmB,OAAAA,CAAAA,KAAQ;AACnD,EAAA,MAAMT,OAAAA,GAAUI,MAAAA,CAAOK,OAAAA,CAAAA,CAASC,SAASpB,IAAAA,CAAAA;AAEzC,EAAA,IAAI,CAACU,OAAAA,EAAS;AACV,IAAA,MAAM,IAAIP,KAAAA,CAAM,CAAA,KAAA,EAAQH,IAAAA,CAAAA,4BAAAA,EAAmCmB,OAAAA,CAAAA,CAAS,CAAA;AACxE,EAAA;AAEA,EAAA,OAAO;AAACnB,IAAAA,IAAAA;AAAMU,IAAAA;;AAClB,CAAA,CAAA,CAAA,EAbsC,gCAAA;AAmBvC,IAAMW,wBAAAA,mBAA2B,MAAA,CAAA,CACpCd,OAAAA,EACAR,QAAAA,KAEA;AACO,EAAA,GAAA,IAAIuB,GAAAA,CACHf,OAAAA,CAAQE,mBAAAA,CACHS,GAAAA,CACG,CAACV,WAAAA,KAAgBG,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,EAAaT,QAAAA,CAAS,CAAA,CAElFwB,MAAAA,CAAOC,QAAAA,CAAAA;AAElBC,CAAAA,CAAAA,IAAAA,EAAI,EAZ8B,0BAAA","file":"3XEUJAQB.js","sourcesContent":["import { isString } from 'es-toolkit';\n\nimport type { VersionCombination } from '../config';\nimport type { Tool } from '../config';\nimport type { ChainContext } from '../context';\n\nexport const findToolByName = <TImageId extends string>(\n { tools }: ChainContext<TImageId>,\n toolName: string,\n): Tool => {\n const tool = tools.find((tool) => tool.name === toolName);\n\n if (!tool) {\n throw new Error(`Tool '${toolName}' not found`);\n }\n\n return tool;\n};\n\nexport const getImageName = (basename: string): string => `${basename}-tooling`;\n\n/**\n * Get default version for a specific tool from version matrix\n */\nexport const getToolDefaultVersion = <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n): string | null => {\n const combination = context.versionCombinations[0];\n\n if (!combination) {\n return null;\n }\n\n const version = findToolVersionsForCombination(context, combination)[toolName];\n\n if (!version) {\n console.warn(`No default version found for tool '${toolName}' in matrix`);\n return null;\n }\n\n return version;\n};\n\nexport const findToolVersionsForCombination = <TImageId extends string>(\n { images }: ChainContext<TImageId>,\n combination: VersionCombination<TImageId>,\n): Record<string, string> =>\n Object.fromEntries(\n Object.entries(combination.images).map(([tool, imageId]) => {\n const version = images[imageId].versions[tool];\n\n if (!version) {\n throw new Error(`Tool ${tool} not found in Docker image: ${imageId}`);\n }\n\n return [tool, version];\n }),\n );\n\n/**\n * Get supported versions for a specific tool from version matrix\n */\nexport const getToolSupportedVersions = <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n): string[] =>\n [\n ...new Set(\n context.versionCombinations\n .map(\n (combination) => findToolVersionsForCombination(context, combination)[toolName],\n )\n .filter(isString),\n ),\n ].sort();\n"]}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var KHVGLVR5_cjs = require('./KHVGLVR5.cjs');
|
|
4
4
|
var esToolkit = require('es-toolkit');
|
|
5
5
|
|
|
6
6
|
// src/utils/finder.ts
|
|
7
|
-
|
|
8
|
-
var findToolByName = /* @__PURE__ */
|
|
7
|
+
KHVGLVR5_cjs.init_cjs_shims();
|
|
8
|
+
var findToolByName = /* @__PURE__ */ KHVGLVR5_cjs.__name(({ tools }, toolName) => {
|
|
9
9
|
const tool = tools.find((tool2) => tool2.name === toolName);
|
|
10
10
|
if (!tool) {
|
|
11
11
|
throw new Error(`Tool '${toolName}' not found`);
|
|
12
12
|
}
|
|
13
13
|
return tool;
|
|
14
14
|
}, "findToolByName");
|
|
15
|
-
var getImageName = /* @__PURE__ */
|
|
16
|
-
var getToolDefaultVersion = /* @__PURE__ */
|
|
15
|
+
var getImageName = /* @__PURE__ */ KHVGLVR5_cjs.__name((basename) => `${basename}-tooling`, "getImageName");
|
|
16
|
+
var getToolDefaultVersion = /* @__PURE__ */ KHVGLVR5_cjs.__name((context, toolName) => {
|
|
17
17
|
const combination = context.versionCombinations[0];
|
|
18
18
|
if (!combination) {
|
|
19
19
|
return null;
|
|
@@ -25,7 +25,7 @@ var getToolDefaultVersion = /* @__PURE__ */ _24WEKBY3_cjs.__name((context, toolN
|
|
|
25
25
|
}
|
|
26
26
|
return version;
|
|
27
27
|
}, "getToolDefaultVersion");
|
|
28
|
-
var findToolVersionsForCombination = /* @__PURE__ */
|
|
28
|
+
var findToolVersionsForCombination = /* @__PURE__ */ KHVGLVR5_cjs.__name(({ images }, combination) => Object.fromEntries(Object.entries(combination.images).map(([tool, imageId]) => {
|
|
29
29
|
const version = images[imageId].versions[tool];
|
|
30
30
|
if (!version) {
|
|
31
31
|
throw new Error(`Tool ${tool} not found in Docker image: ${imageId}`);
|
|
@@ -35,7 +35,7 @@ var findToolVersionsForCombination = /* @__PURE__ */ _24WEKBY3_cjs.__name(({ ima
|
|
|
35
35
|
version
|
|
36
36
|
];
|
|
37
37
|
})), "findToolVersionsForCombination");
|
|
38
|
-
var getToolSupportedVersions = /* @__PURE__ */
|
|
38
|
+
var getToolSupportedVersions = /* @__PURE__ */ KHVGLVR5_cjs.__name((context, toolName) => [
|
|
39
39
|
...new Set(context.versionCombinations.map((combination) => findToolVersionsForCombination(context, combination)[toolName]).filter(esToolkit.isString))
|
|
40
40
|
].sort(), "getToolSupportedVersions");
|
|
41
41
|
|
|
@@ -44,5 +44,5 @@ exports.findToolVersionsForCombination = findToolVersionsForCombination;
|
|
|
44
44
|
exports.getImageName = getImageName;
|
|
45
45
|
exports.getToolDefaultVersion = getToolDefaultVersion;
|
|
46
46
|
exports.getToolSupportedVersions = getToolSupportedVersions;
|
|
47
|
-
//# sourceMappingURL=
|
|
48
|
-
//# sourceMappingURL=
|
|
47
|
+
//# sourceMappingURL=4BP4CCPZ.cjs.map
|
|
48
|
+
//# sourceMappingURL=4BP4CCPZ.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/finder.ts"],"names":["init_cjs_shims","findToolByName","__name","tools","toolName","tool","find","name","Error","getImageName","basename","getToolDefaultVersion","context","combination","versionCombinations","version","findToolVersionsForCombination","console","warn","images","Object","fromEntries","entries","map","imageId","versions","getToolSupportedVersions","Set","filter","isString","sort"],"mappings":";;;;;;AAAAA,
|
|
1
|
+
{"version":3,"sources":["../src/utils/finder.ts"],"names":["init_cjs_shims","findToolByName","__name","tools","toolName","tool","find","name","Error","getImageName","basename","getToolDefaultVersion","context","combination","versionCombinations","version","findToolVersionsForCombination","console","warn","images","Object","fromEntries","entries","map","imageId","versions","getToolSupportedVersions","Set","filter","isString","sort"],"mappings":";;;;;;AAAAA,2BAAA,EAAA;AAMO,IAAMC,cAAAA,mBAAiBC,mBAAA,CAAA,CAC1B,EAAEC,KAAAA,IACFC,QAAAA,KAAAA;AAEA,EAAA,MAAMC,OAAOF,KAAAA,CAAMG,IAAAA,CAAK,CAACD,KAAAA,KAASA,KAAAA,CAAKE,SAASH,QAAAA,CAAAA;AAEhD,EAAA,IAAI,CAACC,IAAAA,EAAM;AACP,IAAA,MAAM,IAAIG,KAAAA,CAAM,CAAA,MAAA,EAASJ,QAAAA,CAAAA,WAAAA,CAAqB,CAAA;AAClD,EAAA;AAEA,EAAA,OAAOC,IAAAA;AACX,CAAA,EAX8B,gBAAA;AAavB,IAAMI,YAAAA,mBAAeP,mBAAA,CAAA,CAACQ,QAAAA,KAA6B,CAAA,EAAGA,QAAAA,CAAAA,QAAAA,CAAAA,EAAjC,cAAA;AAKrB,IAAMC,qBAAAA,mBAAwBT,mBAAA,CAAA,CACjCU,OAAAA,EACAR,QAAAA,KAAAA;AAEA,EAAA,MAAMS,WAAAA,GAAcD,OAAAA,CAAQE,mBAAAA,CAAoB,CAAA,CAAA;AAEhD,EAAA,IAAI,CAACD,WAAAA,EAAa;AACd,IAAA,OAAO,IAAA;AACX,EAAA;AAEA,EAAA,MAAME,OAAAA,GAAUC,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,EAAaT,QAAAA,CAAAA;AAErE,EAAA,IAAI,CAACW,OAAAA,EAAS;AACVE,IAAAA,OAAAA,CAAQC,IAAAA,CAAK,CAAA,mCAAA,EAAsCd,QAAAA,CAAAA,WAAAA,CAAqB,CAAA;AACxE,IAAA,OAAO,IAAA;AACX,EAAA;AAEA,EAAA,OAAOW,OAAAA;AACX,CAAA,EAlBqC,uBAAA;AAoB9B,IAAMC,iDAAiCd,mBAAA,CAAA,CAC1C,EAAEiB,QAAM,EACRN,WAAAA,KAEAO,OAAOC,WAAAA,CACHD,MAAAA,CAAOE,OAAAA,CAAQT,WAAAA,CAAYM,MAAM,CAAA,CAAEI,GAAAA,CAAI,CAAC,CAAClB,IAAAA,EAAMmB,OAAAA,CAAAA,KAAQ;AACnD,EAAA,MAAMT,OAAAA,GAAUI,MAAAA,CAAOK,OAAAA,CAAAA,CAASC,SAASpB,IAAAA,CAAAA;AAEzC,EAAA,IAAI,CAACU,OAAAA,EAAS;AACV,IAAA,MAAM,IAAIP,KAAAA,CAAM,CAAA,KAAA,EAAQH,IAAAA,CAAAA,4BAAAA,EAAmCmB,OAAAA,CAAAA,CAAS,CAAA;AACxE,EAAA;AAEA,EAAA,OAAO;AAACnB,IAAAA,IAAAA;AAAMU,IAAAA;;AAClB,CAAA,CAAA,CAAA,EAbsC,gCAAA;AAmBvC,IAAMW,wBAAAA,mBAA2BxB,mBAAA,CAAA,CACpCU,OAAAA,EACAR,QAAAA,KAEA;AACO,EAAA,GAAA,IAAIuB,GAAAA,CACHf,OAAAA,CAAQE,mBAAAA,CACHS,GAAAA,CACG,CAACV,WAAAA,KAAgBG,8BAAAA,CAA+BJ,OAAAA,EAASC,WAAAA,EAAaT,QAAAA,CAAS,CAAA,CAElFwB,MAAAA,CAAOC,kBAAAA,CAAAA;AAElBC,CAAAA,CAAAA,IAAAA,EAAI,EAZ8B,0BAAA","file":"4BP4CCPZ.cjs","sourcesContent":["import { isString } from 'es-toolkit';\n\nimport type { VersionCombination } from '../config';\nimport type { Tool } from '../config';\nimport type { ChainContext } from '../context';\n\nexport const findToolByName = <TImageId extends string>(\n { tools }: ChainContext<TImageId>,\n toolName: string,\n): Tool => {\n const tool = tools.find((tool) => tool.name === toolName);\n\n if (!tool) {\n throw new Error(`Tool '${toolName}' not found`);\n }\n\n return tool;\n};\n\nexport const getImageName = (basename: string): string => `${basename}-tooling`;\n\n/**\n * Get default version for a specific tool from version matrix\n */\nexport const getToolDefaultVersion = <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n): string | null => {\n const combination = context.versionCombinations[0];\n\n if (!combination) {\n return null;\n }\n\n const version = findToolVersionsForCombination(context, combination)[toolName];\n\n if (!version) {\n console.warn(`No default version found for tool '${toolName}' in matrix`);\n return null;\n }\n\n return version;\n};\n\nexport const findToolVersionsForCombination = <TImageId extends string>(\n { images }: ChainContext<TImageId>,\n combination: VersionCombination<TImageId>,\n): Record<string, string> =>\n Object.fromEntries(\n Object.entries(combination.images).map(([tool, imageId]) => {\n const version = images[imageId].versions[tool];\n\n if (!version) {\n throw new Error(`Tool ${tool} not found in Docker image: ${imageId}`);\n }\n\n return [tool, version];\n }),\n );\n\n/**\n * Get supported versions for a specific tool from version matrix\n */\nexport const getToolSupportedVersions = <TImageId extends string>(\n context: ChainContext<TImageId>,\n toolName: string,\n): string[] =>\n [\n ...new Set(\n context.versionCombinations\n .map(\n (combination) => findToolVersionsForCombination(context, combination)[toolName],\n )\n .filter(isString),\n ),\n ].sort();\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { init_esm_shims, __name } from './
|
|
1
|
+
import { init_esm_shims, __name } from './CWKWODSW.js';
|
|
2
2
|
import { delay } from 'es-toolkit';
|
|
3
3
|
import * as console from 'console';
|
|
4
4
|
import { rmSync } from 'fs';
|
|
@@ -81,5 +81,5 @@ var lockMany = /* @__PURE__ */ __name(async (keys, run) => (
|
|
|
81
81
|
), "lockMany");
|
|
82
82
|
|
|
83
83
|
export { buildLockFilePath, lock, lockMany };
|
|
84
|
-
//# sourceMappingURL=
|
|
85
|
-
//# sourceMappingURL=
|
|
84
|
+
//# sourceMappingURL=4SFAVHVD.js.map
|
|
85
|
+
//# sourceMappingURL=4SFAVHVD.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/lock.ts"],"names":["directory","join","homedir","defaultOptions","interval","timeout","signals","buildLockFilePath","key","lock","run","options","path","packageName","env","npm_package_name","info","unlock","rmSync","force","lockError","mkdir","recursive","handle","open","constants","O_CREAT","O_EXCL","close","error","time","stat","birthtime","_error","Date","now","getTime","Error","message","delay","signal","process","addListener","console","log","removeListener","lockMany","keys","sort","reduce"],"mappings":"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","file":"
|
|
1
|
+
{"version":3,"sources":["../src/core/lock.ts"],"names":["directory","join","homedir","defaultOptions","interval","timeout","signals","buildLockFilePath","key","lock","run","options","path","packageName","env","npm_package_name","info","unlock","rmSync","force","lockError","mkdir","recursive","handle","open","constants","O_CREAT","O_EXCL","close","error","time","stat","birthtime","_error","Date","now","getTime","Error","message","delay","signal","process","addListener","console","log","removeListener","lockMany","keys","sort","reduce"],"mappings":";;;;;;;;;;AAAA,cAAA,EAAA;AAcA,IAAMA,SAAAA,GAAYC,IAAAA,CAAKC,OAAAA,EAAAA,EAAW,yBAAA,CAAA;AAClC,IAAMC,cAAAA,GAAiB;EAAEC,QAAAA,EAAU,GAAA;AAAMC,EAAAA,OAAAA,EAAS,EAAA,GAAK;AAAO,CAAA;AAC9D,IAAMC,OAAAA,GAAU;AAAC,EAAA,QAAA;AAAU,EAAA,SAAA;AAAW,EAAA;;AAE/B,IAAMC,oCAAoB,MAAA,CAAA,CAACC,GAAAA,KAAwBP,IAAAA,CAAKD,SAAAA,EAAWQ,GAAAA,CAAAA,EAAzC,mBAAA;AAE1B,IAAMC,uBAAO,MAAA,CAAA,OAAUD,GAAAA,EAAaE,GAAAA,EAAuBC,OAAAA,GAAuB,EAAC,KAAC;AACvF,EAAA,MAAM,EAAEP,QAAAA,EAAUC,OAAAA,EAAO,GAAK;IAAE,GAAGF,cAAAA;IAAgB,GAAGQ;AAAQ,GAAA;AAE9D,EAAA,MAAMC,IAAAA,GAAOL,kBAAkBC,GAAAA,CAAAA;AAC/B,EAAA,MAAMK,cAAcC,GAAAA,CAAIC,gBAAAA;AACxB,EAAA,MAAMC,IAAAA,GAAO;OAAKH,WAAAA,GAAc;AAAC,MAAA,KAAA;AAAOA,MAAAA;QAAe,EAAA;AAAK,IAAA,IAAA;AAAMD,IAAAA;AAAMX,GAAAA,CAAAA,IAAAA,CAAK,GAAA,CAAA;AAE7E,EAAA,MAAMgB,MAAAA,mBAAS,MAAA,CAAA,MAAMC,MAAAA,CAAON,IAAAA,EAAM;IAAEO,KAAAA,EAAO;AAAK,GAAA,CAAA,EAAjC,QAAA,CAAA;AAEf,EAAA,OAAO,IAAA,EAAM;AACT,IAAA,IAAIC,SAAAA;AAEJ,IAAA,IAAI;AACA,MAAA,MAAMC,MAAMrB,SAAAA,EAAW;QAAEsB,SAAAA,EAAW;OAAK,CAAA;AACzC,MAAA,MAAMC,SAAS,MAAMC,IAAAA,CAAKZ,MAAMa,SAAAA,CAAUC,OAAAA,GAAUD,UAAUE,MAAM,CAAA;AACpE,MAAA,MAAMJ,OAAOK,KAAAA,EAAK;AAClB,MAAA;AACJ,IAAA,CAAA,CAAA,OAASC,KAAAA,EAAgB;AACrBT,MAAAA,SAAAA,GAAYS,KAAAA;AAChB,IAAA;AAEA,IAAA,IAAIC,IAAAA;AAEJ,IAAA,IAAI;AACAA,MAAAA,IAAAA,GAAAA,CAAQ,MAAMC,IAAAA,CAAKnB,IAAAA,CAAAA,EAAOoB,SAAAA;AAC9B,IAAA,CAAA,CAAA,OAASC,MAAAA,EAAQ;AAEjB,IAAA;AAEA,IAAA,IAAIH,QAAQI,IAAAA,CAAKC,GAAAA,KAAQL,IAAAA,CAAKM,OAAAA,KAAY/B,OAAAA,EAAS;AAI/CY,MAAAA,MAAAA,EAAAA;AACA,MAAA,MAAM,IAAIoB,KAAAA,CAAM,CAAA,8BAAA,EAAiCrB,IAAAA,CAAAA,EAAAA,EAASI,SAAAA,CAAUkB,OAAO,CAAA,CAAE,CAAA;AACjF,IAAA;AAEA,IAAA,MAAMC,MAAMnC,QAAAA,CAAAA;AAChB,EAAA;AAEA,EAAA,KAAA,MAAWoC,UAAUlC,OAAAA,EAAS;AAC1BmC,IAAAA,OAAAA,CAAQC,WAAAA,CAAYF,QAAQvB,MAAAA,CAAAA;AAChC,EAAA;AAEA0B,EAAQC,OAAAA,CAAAA,GAAAA,CAAI,CAAA,wBAAA,EAAoB5B,IAAAA,CAAAA,CAAM,CAAA;AAEtC,EAAA,IAAI;AACA,IAAA,OAAO,MAAMN,GAAAA,EAAAA;EACjB,CAAA,SAAA;AACI,IAAA,KAAA,MAAW8B,UAAUlC,OAAAA,EAAS;AAC1BmC,MAAAA,OAAAA,CAAQI,cAAAA,CAAeL,QAAQvB,MAAAA,CAAAA;AACnC,IAAA;AAEAA,IAAAA,MAAAA,EAAAA;AAEA0B,IAAQC,OAAAA,CAAAA,GAAAA,CAAI,CAAA,wBAAA,EAAoB5B,IAAAA,CAAAA,CAAM,CAAA;AAC1C,EAAA;AACJ,CAAA,EAzDoB,MAAA;AA2Db,IAAM8B,QAAAA,iCAAqBC,IAAAA,EAAgBrC,GAAAA;;AAE9CqC,EAAAA,IAAAA,CAAKC,IAAAA,EAAI,CAAGC,MAAAA,CAAO,CAACvC,IAAAA,EAAKF,GAAAA,KAAQ,MAAMC,IAAAA,CAAKD,GAAAA,EAAKE,IAAAA,CAAAA,EAAMA,GAAAA,CAAAA;AAFnC,CAAA,EAAA,UAAA","file":"4SFAVHVD.js","sourcesContent":["import { delay } from 'es-toolkit';\nimport * as console from 'node:console';\nimport { rmSync } from 'node:fs';\nimport { stat } from 'node:fs/promises';\nimport { constants, mkdir, open } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { env } from 'node:process';\n\ninterface LockOptions {\n interval?: number;\n timeout?: number;\n}\n\nconst directory = join(homedir(), '.cache/vm-tooling/locks');\nconst defaultOptions = { interval: 1000, timeout: 15 * 60_000 };\nconst signals = ['SIGINT', 'SIGTERM', 'SIGHUP'] as const;\n\nexport const buildLockFilePath = (key: string): string => join(directory, key);\n\nexport const lock = async <T>(key: string, run: () => Promise<T>, options: LockOptions = {}) => {\n const { interval, timeout } = { ...defaultOptions, ...options };\n\n const path = buildLockFilePath(key);\n const packageName = env.npm_package_name;\n const info = [...(packageName ? ['for', packageName] : []), 'at', path].join(' ');\n\n const unlock = () => rmSync(path, { force: true });\n\n while (true) {\n let lockError;\n\n try {\n await mkdir(directory, { recursive: true });\n const handle = await open(path, constants.O_CREAT | constants.O_EXCL);\n await handle.close();\n break;\n } catch (error: unknown) {\n lockError = error as Error;\n }\n\n let time: Date | undefined;\n\n try {\n time = (await stat(path)).birthtime;\n } catch (_error) {\n // \"Crush\" errors as the lock is unlocked between the `open` and `stat`.\n }\n\n if (time && Date.now() - time.getTime() > timeout) {\n // If the timeout is reached, we assume that the previous run is\n // in a bad state and recover automatically by removing the lock file\n // even when it is actually running still.\n unlock();\n throw new Error(`Timeout waiting for lock file ${info}: ${lockError.message}`);\n }\n\n await delay(interval);\n }\n\n for (const signal of signals) {\n process.addListener(signal, unlock);\n }\n\n console.log(`🔒 Acquired lock ${info}`);\n\n try {\n return await run();\n } finally {\n for (const signal of signals) {\n process.removeListener(signal, unlock);\n }\n\n unlock();\n\n console.log(`🔓 Released lock ${info}`);\n }\n};\n\nexport const lockMany = async <T>(keys: string[], run: () => Promise<T>): Promise<T> =>\n // Sort keys to avoid deadlocks.\n keys.sort().reduce((run, key) => () => lock(key, run), run)();\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
3
|
+
var X64VX57C_cjs = require('./X64VX57C.cjs');
|
|
4
|
+
var WFBRUQAF_cjs = require('./WFBRUQAF.cjs');
|
|
5
|
+
var S6PEV2YJ_cjs = require('./S6PEV2YJ.cjs');
|
|
6
|
+
var REVK4LZT_cjs = require('./REVK4LZT.cjs');
|
|
7
|
+
var _4BP4CCPZ_cjs = require('./4BP4CCPZ.cjs');
|
|
8
|
+
var _7WWOPL2K_cjs = require('./7WWOPL2K.cjs');
|
|
9
|
+
var KHVGLVR5_cjs = require('./KHVGLVR5.cjs');
|
|
10
10
|
var esToolkit = require('es-toolkit');
|
|
11
11
|
var os = require('os');
|
|
12
12
|
var path = require('path');
|
|
@@ -40,8 +40,8 @@ var process__default = /*#__PURE__*/_interopDefault(process);
|
|
|
40
40
|
var semver__namespace = /*#__PURE__*/_interopNamespace(semver);
|
|
41
41
|
|
|
42
42
|
// src/core/tool-executor.ts
|
|
43
|
-
|
|
44
|
-
var getHostUserIds = /* @__PURE__ */
|
|
43
|
+
KHVGLVR5_cjs.init_cjs_shims();
|
|
44
|
+
var getHostUserIds = /* @__PURE__ */ KHVGLVR5_cjs.__name(() => {
|
|
45
45
|
const userInfo = os__default.default.userInfo();
|
|
46
46
|
if (userInfo.uid === -1 || userInfo.gid === -1) {
|
|
47
47
|
return void 0;
|
|
@@ -57,15 +57,15 @@ zx.$.stdio = [
|
|
|
57
57
|
"pipe",
|
|
58
58
|
process__default.default.stderr
|
|
59
59
|
];
|
|
60
|
-
var mergeVolumes = /* @__PURE__ */
|
|
60
|
+
var mergeVolumes = /* @__PURE__ */ KHVGLVR5_cjs.__name((defaultVolumes, userVolumes) => esToolkit.uniqBy([
|
|
61
61
|
...userVolumes,
|
|
62
62
|
...defaultVolumes
|
|
63
63
|
], (volume) => volume.containerPath), "mergeVolumes");
|
|
64
|
-
var resolveVolumePath = /* @__PURE__ */
|
|
64
|
+
var resolveVolumePath = /* @__PURE__ */ KHVGLVR5_cjs.__name((volume, workspaceRoot) => volume.type === "host" ? {
|
|
65
65
|
...volume,
|
|
66
66
|
hostPath: path__default.default.resolve(workspaceRoot, volume.hostPath.replace(/^~/, os__default.default.homedir()))
|
|
67
67
|
} : volume, "resolveVolumePath");
|
|
68
|
-
var ensureDockerImage = /* @__PURE__ */
|
|
68
|
+
var ensureDockerImage = /* @__PURE__ */ KHVGLVR5_cjs.__name(async (imageUri) => {
|
|
69
69
|
let output;
|
|
70
70
|
try {
|
|
71
71
|
output = await zx.$`docker image inspect --format {{.Id}} ${imageUri}`.nothrow().quiet();
|
|
@@ -76,7 +76,7 @@ var ensureDockerImage = /* @__PURE__ */ _24WEKBY3_cjs.__name(async (imageUri) =>
|
|
|
76
76
|
console.info("\u{1F4E5} Pulling Docker image from:", imageUri);
|
|
77
77
|
output = await zx.$`docker pull ${imageUri}`.nothrow();
|
|
78
78
|
} catch (error) {
|
|
79
|
-
throw new Error(`Failed to pull Docker image ${imageUri}: ${
|
|
79
|
+
throw new Error(`Failed to pull Docker image ${imageUri}: ${X64VX57C_cjs.stringifyError(error)}`);
|
|
80
80
|
}
|
|
81
81
|
if (output.exitCode) {
|
|
82
82
|
const stderr = output.stderr ?? "";
|
|
@@ -90,7 +90,7 @@ var ensureDockerImage = /* @__PURE__ */ _24WEKBY3_cjs.__name(async (imageUri) =>
|
|
|
90
90
|
console.info(`\u2705 Successfully pulled: ${imageUri}`);
|
|
91
91
|
}, "ensureDockerImage");
|
|
92
92
|
async function executeToolCommand(context, toolName, args, { cwd, volumes: userVolumes, customEntrypoint: entrypoint, env: customEnvVars, script, publish, versions = {}, defaultVolumesEnabled = true }) {
|
|
93
|
-
const tool =
|
|
93
|
+
const tool = _4BP4CCPZ_cjs.findToolByName(context, toolName);
|
|
94
94
|
if (tool.preExecute) {
|
|
95
95
|
await tool.preExecute(context, {
|
|
96
96
|
cwd,
|
|
@@ -103,9 +103,9 @@ async function executeToolCommand(context, toolName, args, { cwd, volumes: userV
|
|
|
103
103
|
defaultVolumesEnabled
|
|
104
104
|
});
|
|
105
105
|
}
|
|
106
|
-
const workspaceRoot = await
|
|
106
|
+
const workspaceRoot = await REVK4LZT_cjs.findWorkspaceRoot(cwd);
|
|
107
107
|
const defaultVolumes = defaultVolumesEnabled ? tool.defaultVolumes ?? [] : [];
|
|
108
|
-
const volumes = mergeVolumes(defaultVolumes, userVolumes).map((volume) => resolveVolumePath(volume, workspaceRoot)).map(
|
|
108
|
+
const volumes = mergeVolumes(defaultVolumes, userVolumes).map((volume) => resolveVolumePath(volume, workspaceRoot)).map(S6PEV2YJ_cjs.qualifyVolumeName);
|
|
109
109
|
if (defaultVolumes.length > 0) {
|
|
110
110
|
console.info(`\u{1F4E6} Using ${defaultVolumes.length} default volume(s) for ${tool.name}`);
|
|
111
111
|
if (userVolumes.length > 0) {
|
|
@@ -115,7 +115,7 @@ async function executeToolCommand(context, toolName, args, { cwd, volumes: userV
|
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
|
-
const resolvedVersion =
|
|
118
|
+
const resolvedVersion = WFBRUQAF_cjs.resolveTypeVersions(context, versions)[tool.name];
|
|
119
119
|
if (!resolvedVersion) {
|
|
120
120
|
throw new Error(`No version resolved for tool ${tool.name}`);
|
|
121
121
|
}
|
|
@@ -129,10 +129,10 @@ async function executeToolCommand(context, toolName, args, { cwd, volumes: userV
|
|
|
129
129
|
console.warn(`Warning: Local configuration version (${secondaryVersion}) differs from resolved version (${resolvedVersion})`);
|
|
130
130
|
}
|
|
131
131
|
} catch (error) {
|
|
132
|
-
console.warn("Could not validate secondary version:",
|
|
132
|
+
console.warn("Could not validate secondary version:", X64VX57C_cjs.stringifyError(error));
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
|
-
const imageUri = await
|
|
135
|
+
const imageUri = await S6PEV2YJ_cjs.getImageUriForTool(context, tool.name, resolvedVersion);
|
|
136
136
|
const relativePath = path__default.default.relative(workspaceRoot, cwd);
|
|
137
137
|
await ensureDockerImage(imageUri);
|
|
138
138
|
if (entrypoint?.trim()) {
|
|
@@ -214,7 +214,7 @@ async function executeToolCommand(context, toolName, args, { cwd, volumes: userV
|
|
|
214
214
|
imageUri,
|
|
215
215
|
...finalArgs
|
|
216
216
|
];
|
|
217
|
-
const output = await
|
|
217
|
+
const output = await _7WWOPL2K_cjs.lockMany(volumes.flatMap((volume) => volume.type === "isolate" && volume.locked ? [
|
|
218
218
|
volume.name
|
|
219
219
|
] : []), async () => {
|
|
220
220
|
const label = `\u23F3 ${finalArgs.join(" ")}`;
|
|
@@ -230,8 +230,8 @@ ${stdout}` : ""}`);
|
|
|
230
230
|
}
|
|
231
231
|
return output;
|
|
232
232
|
}
|
|
233
|
-
|
|
233
|
+
KHVGLVR5_cjs.__name(executeToolCommand, "executeToolCommand");
|
|
234
234
|
|
|
235
235
|
exports.executeToolCommand = executeToolCommand;
|
|
236
|
-
//# sourceMappingURL=
|
|
237
|
-
//# sourceMappingURL=
|
|
236
|
+
//# sourceMappingURL=56KN6KX2.cjs.map
|
|
237
|
+
//# sourceMappingURL=56KN6KX2.cjs.map
|