@layerzerolabs/vm-tooling 0.2.57 → 0.2.59
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/{7TBUPRIP.js → 5HXPGX5E.js} +16 -9
- package/dist/5HXPGX5E.js.map +1 -0
- package/dist/{QTVV3LKQ.cjs → OZWFQA37.cjs} +16 -9
- package/dist/OZWFQA37.cjs.map +1 -0
- package/dist/cli.cjs +2 -2
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/context.cjs.map +1 -1
- package/dist/context.d.ts +6 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +4 -4
- package/dist/7TBUPRIP.js.map +0 -1
- package/dist/QTVV3LKQ.cjs.map +0 -1
|
@@ -17,16 +17,23 @@ var createCli = /* @__PURE__ */ __name((context, registerExtraCommands) => {
|
|
|
17
17
|
`${camelCase(name)}Version`,
|
|
18
18
|
name
|
|
19
19
|
]));
|
|
20
|
-
const parseGlobalOptions = /* @__PURE__ */ __name((command) => {
|
|
20
|
+
const parseGlobalOptions = /* @__PURE__ */ __name(async (command) => {
|
|
21
21
|
const { cwd, volume, ...options } = command.opts();
|
|
22
|
+
const resolvedCwd = cwd ?? process.cwd();
|
|
23
|
+
const cliVersions = Object.fromEntries(Object.entries(options).map(([name, version]) => [
|
|
24
|
+
toolVersionOptions[name],
|
|
25
|
+
version
|
|
26
|
+
]).filter(([tool]) => tool));
|
|
27
|
+
const configVersions = await context.getDefaultVersions?.(resolvedCwd) ?? {};
|
|
28
|
+
const versions = {
|
|
29
|
+
...configVersions,
|
|
30
|
+
...cliVersions
|
|
31
|
+
};
|
|
22
32
|
return {
|
|
23
33
|
...options,
|
|
24
|
-
cwd:
|
|
34
|
+
cwd: resolvedCwd,
|
|
25
35
|
volumes: volume,
|
|
26
|
-
versions
|
|
27
|
-
toolVersionOptions[name],
|
|
28
|
-
version
|
|
29
|
-
]).filter(([tool]) => tool))
|
|
36
|
+
versions
|
|
30
37
|
};
|
|
31
38
|
}, "parseGlobalOptions");
|
|
32
39
|
const program = new Command();
|
|
@@ -104,7 +111,7 @@ var createCli = /* @__PURE__ */ __name((context, registerExtraCommands) => {
|
|
|
104
111
|
program.command(tool.name, {
|
|
105
112
|
isDefault: false
|
|
106
113
|
}).description(`Run ${tool.name} with version checking`).passThroughOptions(true).allowUnknownOption().helpOption(false).argument("[args...]", "Arguments to pass to the tool").action(async (args) => {
|
|
107
|
-
await executeToolCommand(context, tool.name, args, parseGlobalOptions(program));
|
|
114
|
+
await executeToolCommand(context, tool.name, args, await parseGlobalOptions(program));
|
|
108
115
|
});
|
|
109
116
|
}
|
|
110
117
|
registerExtraCommands?.(program, parseGlobalOptions);
|
|
@@ -120,5 +127,5 @@ var runCli = /* @__PURE__ */ __name(async (config, registerExtraCommands) => {
|
|
|
120
127
|
}, "runCli");
|
|
121
128
|
|
|
122
129
|
export { runCli };
|
|
123
|
-
//# sourceMappingURL=
|
|
124
|
-
//# sourceMappingURL=
|
|
130
|
+
//# sourceMappingURL=5HXPGX5E.js.map
|
|
131
|
+
//# sourceMappingURL=5HXPGX5E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts"],"names":["createCli","context","registerExtraCommands","tools","toolVersionOptions","Object","fromEntries","map","name","camelCase","parseGlobalOptions","command","cwd","volume","options","opts","resolvedCwd","process","cliVersions","entries","version","filter","tool","configVersions","getDefaultVersions","versions","volumes","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":"5HXPGX5E.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}\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, ...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 };\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\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"]}
|
|
@@ -25,16 +25,23 @@ var createCli = /* @__PURE__ */ _24WEKBY3_cjs.__name((context, registerExtraComm
|
|
|
25
25
|
`${esToolkit.camelCase(name)}Version`,
|
|
26
26
|
name
|
|
27
27
|
]));
|
|
28
|
-
const parseGlobalOptions = /* @__PURE__ */ _24WEKBY3_cjs.__name((command) => {
|
|
28
|
+
const parseGlobalOptions = /* @__PURE__ */ _24WEKBY3_cjs.__name(async (command) => {
|
|
29
29
|
const { cwd, volume, ...options } = command.opts();
|
|
30
|
+
const resolvedCwd = cwd ?? process__default.default.cwd();
|
|
31
|
+
const cliVersions = Object.fromEntries(Object.entries(options).map(([name, version]) => [
|
|
32
|
+
toolVersionOptions[name],
|
|
33
|
+
version
|
|
34
|
+
]).filter(([tool]) => tool));
|
|
35
|
+
const configVersions = await context.getDefaultVersions?.(resolvedCwd) ?? {};
|
|
36
|
+
const versions = {
|
|
37
|
+
...configVersions,
|
|
38
|
+
...cliVersions
|
|
39
|
+
};
|
|
30
40
|
return {
|
|
31
41
|
...options,
|
|
32
|
-
cwd:
|
|
42
|
+
cwd: resolvedCwd,
|
|
33
43
|
volumes: volume,
|
|
34
|
-
versions
|
|
35
|
-
toolVersionOptions[name],
|
|
36
|
-
version
|
|
37
|
-
]).filter(([tool]) => tool))
|
|
44
|
+
versions
|
|
38
45
|
};
|
|
39
46
|
}, "parseGlobalOptions");
|
|
40
47
|
const program = new commander.Command();
|
|
@@ -112,7 +119,7 @@ var createCli = /* @__PURE__ */ _24WEKBY3_cjs.__name((context, registerExtraComm
|
|
|
112
119
|
program.command(tool.name, {
|
|
113
120
|
isDefault: false
|
|
114
121
|
}).description(`Run ${tool.name} with version checking`).passThroughOptions(true).allowUnknownOption().helpOption(false).argument("[args...]", "Arguments to pass to the tool").action(async (args) => {
|
|
115
|
-
await YBZF5XJV_cjs.executeToolCommand(context, tool.name, args, parseGlobalOptions(program));
|
|
122
|
+
await YBZF5XJV_cjs.executeToolCommand(context, tool.name, args, await parseGlobalOptions(program));
|
|
116
123
|
});
|
|
117
124
|
}
|
|
118
125
|
registerExtraCommands?.(program, parseGlobalOptions);
|
|
@@ -128,5 +135,5 @@ var runCli = /* @__PURE__ */ _24WEKBY3_cjs.__name(async (config, registerExtraCo
|
|
|
128
135
|
}, "runCli");
|
|
129
136
|
|
|
130
137
|
exports.runCli = runCli;
|
|
131
|
-
//# sourceMappingURL=
|
|
132
|
-
//# sourceMappingURL=
|
|
138
|
+
//# sourceMappingURL=OZWFQA37.cjs.map
|
|
139
|
+
//# sourceMappingURL=OZWFQA37.cjs.map
|
|
@@ -0,0 +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","options","opts","resolvedCwd","process","cliVersions","entries","version","filter","tool","configVersions","getDefaultVersions","versions","volumes","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":"OZWFQA37.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}\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, ...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 };\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\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"]}
|
package/dist/cli.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var OZWFQA37_cjs = require('./OZWFQA37.cjs');
|
|
4
4
|
require('./Y76LNXBO.cjs');
|
|
5
5
|
require('./O2P6E7GR.cjs');
|
|
6
6
|
require('./IPYOACCU.cjs');
|
|
@@ -19,7 +19,7 @@ require('./24WEKBY3.cjs');
|
|
|
19
19
|
|
|
20
20
|
Object.defineProperty(exports, "runCli", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return OZWFQA37_cjs.runCli; }
|
|
23
23
|
});
|
|
24
24
|
//# sourceMappingURL=cli.cjs.map
|
|
25
25
|
//# sourceMappingURL=cli.cjs.map
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import type { ChainContext } from './context';
|
|
3
3
|
import type { ToolCommandExecutionOptions } from './core';
|
|
4
|
-
type RegisterExtraCommands = (program: Command, parseGlobalOptions: (command: Command) => ToolCommandExecutionOptions) => void;
|
|
4
|
+
type RegisterExtraCommands = (program: Command, parseGlobalOptions: (command: Command) => Promise<ToolCommandExecutionOptions>) => void;
|
|
5
5
|
export declare const runCli: <TImageId extends string>(config: ChainContext<TImageId>, registerExtraCommands?: RegisterExtraCommands) => Promise<void>;
|
|
6
6
|
export {};
|
|
7
7
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAc1D,KAAK,qBAAqB,GAAG,CACzB,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,2BAA2B,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAc1D,KAAK,qBAAqB,GAAG,CACzB,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,2BAA2B,CAAC,KAC7E,IAAI,CAAC;AA6LV,eAAO,MAAM,MAAM,GAAU,QAAQ,SAAS,MAAM,EAChD,QAAQ,YAAY,CAAC,QAAQ,CAAC,EAC9B,wBAAwB,qBAAqB,KAC9C,OAAO,CAAC,IAAI,CAOd,CAAC"}
|
package/dist/cli.js
CHANGED
package/dist/context.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/context.ts"],"names":["init_cjs_shims"],"mappings":";;;;;AAGAA,4BAAA,EAAA","file":"context.cjs","sourcesContent":["import type { Image, VersionCombination } from './config';\nimport type { Tool } from './config';\n\nexport interface ChainContext<TImageId extends string> {\n tools: readonly [Tool, ...Tool[]];\n images: Record<TImageId, Image>;\n versionCombinations: [VersionCombination<TImageId>, ...VersionCombination<TImageId>[]];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/context.ts"],"names":["init_cjs_shims"],"mappings":";;;;;AAGAA,4BAAA,EAAA","file":"context.cjs","sourcesContent":["import type { Image, VersionCombination } from './config';\nimport type { Tool } from './config';\n\nexport interface ChainContext<TImageId extends string> {\n tools: readonly [Tool, ...Tool[]];\n images: Record<TImageId, Image>;\n versionCombinations: [VersionCombination<TImageId>, ...VersionCombination<TImageId>[]];\n /**\n * Optional hook to read default tool versions from project config files\n * (e.g., Anchor.toml for Solana, Move.toml for Aptos/Sui).\n * Returned versions are used as defaults — CLI flags override.\n */\n getDefaultVersions?: (cwd: string) => Promise<Record<string, string>>;\n}\n"]}
|
package/dist/context.d.ts
CHANGED
|
@@ -4,5 +4,11 @@ export interface ChainContext<TImageId extends string> {
|
|
|
4
4
|
tools: readonly [Tool, ...Tool[]];
|
|
5
5
|
images: Record<TImageId, Image>;
|
|
6
6
|
versionCombinations: [VersionCombination<TImageId>, ...VersionCombination<TImageId>[]];
|
|
7
|
+
/**
|
|
8
|
+
* Optional hook to read default tool versions from project config files
|
|
9
|
+
* (e.g., Anchor.toml for Solana, Move.toml for Aptos/Sui).
|
|
10
|
+
* Returned versions are used as defaults — CLI flags override.
|
|
11
|
+
*/
|
|
12
|
+
getDefaultVersions?: (cwd: string) => Promise<Record<string, string>>;
|
|
7
13
|
}
|
|
8
14
|
//# sourceMappingURL=context.d.ts.map
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,WAAW,YAAY,CAAC,QAAQ,SAAS,MAAM;IACjD,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChC,mBAAmB,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,WAAW,YAAY,CAAC,QAAQ,SAAS,MAAM;IACjD,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChC,mBAAmB,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvF;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACzE"}
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/context.ts"],"names":[],"mappings":";;;AAGA,cAAA,EAAA","file":"context.js","sourcesContent":["import type { Image, VersionCombination } from './config';\nimport type { Tool } from './config';\n\nexport interface ChainContext<TImageId extends string> {\n tools: readonly [Tool, ...Tool[]];\n images: Record<TImageId, Image>;\n versionCombinations: [VersionCombination<TImageId>, ...VersionCombination<TImageId>[]];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/context.ts"],"names":[],"mappings":";;;AAGA,cAAA,EAAA","file":"context.js","sourcesContent":["import type { Image, VersionCombination } from './config';\nimport type { Tool } from './config';\n\nexport interface ChainContext<TImageId extends string> {\n tools: readonly [Tool, ...Tool[]];\n images: Record<TImageId, Image>;\n versionCombinations: [VersionCombination<TImageId>, ...VersionCombination<TImageId>[]];\n /**\n * Optional hook to read default tool versions from project config files\n * (e.g., Anchor.toml for Solana, Move.toml for Aptos/Sui).\n * Returned versions are used as defaults — CLI flags override.\n */\n getDefaultVersions?: (cwd: string) => Promise<Record<string, string>>;\n}\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var _33TVTWFZ_cjs = require('./33TVTWFZ.cjs');
|
|
4
4
|
require('./7FZK5RET.cjs');
|
|
5
|
-
var
|
|
5
|
+
var OZWFQA37_cjs = require('./OZWFQA37.cjs');
|
|
6
6
|
require('./Y76LNXBO.cjs');
|
|
7
7
|
require('./O2P6E7GR.cjs');
|
|
8
8
|
require('./IPYOACCU.cjs');
|
|
@@ -27,7 +27,7 @@ Object.defineProperty(exports, "runGithubMatrixGenerator", {
|
|
|
27
27
|
});
|
|
28
28
|
Object.defineProperty(exports, "runCli", {
|
|
29
29
|
enumerable: true,
|
|
30
|
-
get: function () { return
|
|
30
|
+
get: function () { return OZWFQA37_cjs.runCli; }
|
|
31
31
|
});
|
|
32
32
|
Object.defineProperty(exports, "testTools", {
|
|
33
33
|
enumerable: true,
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"semver": "^7.5.4",
|
|
23
23
|
"zod": "4.3.5",
|
|
24
24
|
"zx": "^8.8.5",
|
|
25
|
-
"@layerzerolabs/common-node-utils": "0.2.
|
|
25
|
+
"@layerzerolabs/common-node-utils": "0.2.59"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@jest/globals": "^29.7.0",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"tsx": "^4.19.3",
|
|
35
35
|
"typescript": "^5.8.2",
|
|
36
36
|
"vitest": "^3.2.3",
|
|
37
|
-
"@layerzerolabs/typescript-configuration": "0.2.
|
|
38
|
-
"@layerzerolabs/tsup-configuration": "0.2.
|
|
37
|
+
"@layerzerolabs/typescript-configuration": "0.2.59",
|
|
38
|
+
"@layerzerolabs/tsup-configuration": "0.2.59"
|
|
39
39
|
},
|
|
40
40
|
"publishConfig": {
|
|
41
41
|
"access": "public",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"onesig-client"
|
|
51
51
|
]
|
|
52
52
|
},
|
|
53
|
-
"version": "0.2.
|
|
53
|
+
"version": "0.2.59",
|
|
54
54
|
"scripts": {
|
|
55
55
|
"build": "tsup",
|
|
56
56
|
"lint": "eslint . --max-warnings 0 || (eslint . --fix --max-warnings 0 && false)",
|
package/dist/7TBUPRIP.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts"],"names":["createCli","context","registerExtraCommands","tools","toolVersionOptions","Object","fromEntries","map","name","camelCase","parseGlobalOptions","command","cwd","volume","options","opts","process","volumes","versions","entries","version","filter","tool","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":"7TBUPRIP.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}\n\ntype RegisterExtraCommands = (\n program: Command,\n parseGlobalOptions: (command: Command) => 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 = (command: Command): ToolCommandExecutionOptions => {\n const { cwd, volume, ...options } = command.opts<GlobalOptions>();\n\n return {\n ...options,\n cwd: cwd ?? process.cwd(),\n volumes: volume,\n versions: Object.fromEntries(\n Object.entries(options)\n .map(([name, version]) => [toolVersionOptions[name], version])\n .filter(([tool]) => tool),\n ),\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\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(context, tool.name, args, parseGlobalOptions(program));\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"]}
|
package/dist/QTVV3LKQ.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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","options","opts","process","volumes","versions","entries","version","filter","tool","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;AA4BA,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,yCAAsBC,OAAAA,KAAAA;AACxB,IAAA,MAAM,EAAEC,GAAAA,EAAKC,MAAAA,EAAQ,GAAGC,OAAAA,EAAAA,GAAYH,QAAQI,IAAAA,EAAI;AAEhD,IAAA,OAAO;MACH,GAAGD,OAAAA;MACHF,GAAAA,EAAKA,GAAAA,IAAOI,yBAAQJ,GAAAA,EAAG;MACvBK,OAAAA,EAASJ,MAAAA;MACTK,QAAAA,EAAUb,MAAAA,CAAOC,WAAAA,CACbD,MAAAA,CAAOc,OAAAA,CAAQL,OAAAA,CAAAA,CACVP,GAAAA,CAAI,CAAC,CAACC,IAAAA,EAAMY,OAAAA,CAAAA,KAAa;AAAChB,QAAAA,kBAAAA,CAAmBI,IAAAA,CAAAA;AAAOY,QAAAA;AAAQ,OAAA,CAAA,CAC5DC,OAAO,CAAC,CAACC,IAAAA,CAAAA,KAAUA,IAAAA,CAAAA;AAEhC,KAAA;EACJ,CAAA,EAb2B,oBAAA,CAAA;AAe3B,EAAA,MAAMC,OAAAA,GAAU,IAAIC,iBAAAA,EAAAA;AAEpBD,EAAAA,OAAAA,CACKf,IAAAA,CAAK,SAAA,CAAA,CACLiB,WAAAA,CACG,6RASI,CAAA,CAEPL,OAAAA,CAAQ,OAAA,CAAA,CACRM,uBAAAA,EAAuB;AAG5B,EAAA,IAAIV,wBAAAA,CAAQW,IAAAA,CAAKC,QAAAA,CAAS,iBAAA,CAAA,EAAoB;AAC1CC,IAAAA,uCAAAA,CAA2B5B,OAAAA,CAAAA;AAC3Be,IAAAA,wBAAAA,CAAQc,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,CAAChC,IAAAA,EAAM,GAAGiC,UAAAA,CAAAA,GAAcT,KAAAA,CAAMU,MAAM,GAAA,CAAA;AAE1C,IAAA,IAAI,CAAClC,IAAAA,IAAQ,CAACiC,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;AAAEhC,QAAAA,IAAAA;QAAMoC,KAAAA,EAAOH,UAAAA,CAAWI,KAAK,GAAA;AAAK;;EAC9D,CAAA,EACA,EAAE,CAAA,CAELd,MAAAA,CACG,qDACA,iJAAA,EACA,CAACC,OAAef,OAAAA,KAAAA;AACZ,IAAA,MAAM,CAAC6B,MAAMC,QAAAA,EAAUC,aAAAA,EAAexC,IAAAA,CAAAA,GAAQwB,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,CAACzB,IAAAA,EAAM;AACP,UAAA,MAAM,IAAIyB,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;AACAhB,MAAAA,GAAAA,OAAAA;AACHgC,MAAAA,iCAAAA,CAAoBC,KAAAA,CAAM;AAAEJ,QAAAA,IAAAA;AAAMC,QAAAA,QAAAA;AAAUC,QAAAA,aAAAA;AAAexC,QAAAA;OAAK;;EAExE,CAAA,EACA,EAAE,CAAA,CAELuB,MAAAA,CACG,4CACA,wDAAA,EACA,CAACa,OAAeO,QAAAA,KAAuB;AAAIA,IAAAA,GAAAA,QAAAA;AAAUP,IAAAA;AACrD,GAAA,EAAA,EAAE,CAAA;AAIV,EAAA,KAAA,MAAWtB,QAAQnB,KAAAA,EAAO;AACtB,IAAA,MAAMiD,cAAAA,GAAiBC,mCAAAA,CAAsBpD,OAAAA,EAASqB,IAAAA,CAAKd,IAAI,CAAA;AAC/D,IAAA,MAAM8C,iBAAAA,GAAoBC,sCAAAA,CAAyBtD,OAAAA,EAASqB,IAAAA,CAAKd,IAAI,CAAA;AAErEe,IAAAA,OAAAA,CAAQQ,MAAAA,CACJ,CAAA,EAAA,EAAKT,IAAAA,CAAKd,IAAI,sBACd,CAAA,QAAA,EAAWc,IAAAA,CAAKd,IAAI,CAAA,mBAAA,EAAsB4C,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,CACKZ,OAAAA,CAAQ,qBAAA,CAAA,CACRc,WAAAA,CAAY,0DAAA,CAAA,CACZ+B,MAAAA,CAAO,CAACC,QAAAA,KAAqBC,mCAAAA,CAAuBzD,OAAAA,EAASwD,QAAAA,CAAAA,CAAAA;AAElE,EAAA,KAAA,MAAWnC,QAAQnB,KAAAA,EAAO;AAGtBoB,IAAAA,OAAAA,CACKZ,OAAAA,CAAQW,KAAKd,IAAAA,EAAM;MAAEmD,SAAAA,EAAW;KAAM,CAAA,CACtClC,YAAY,CAAA,IAAA,EAAOH,IAAAA,CAAKd,IAAI,CAAA,sBAAA,CAAwB,CAAA,CACpDoD,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,gCAAmBhE,OAAAA,EAASqB,IAAAA,CAAKd,MAAMwD,IAAAA,EAAMtD,kBAAAA,CAAmBa,OAAAA,CAAAA,CAAAA;IAC1E,CAAA,CAAA;AACR,EAAA;AAGArB,EAAAA,qBAAAA,GAAwBqB,SAASb,kBAAAA,CAAAA;AAEjC,EAAA,OAAOa,OAAAA;AACX,CAAA,EA5KkB,WAAA,CAAA;AA8KX,IAAM2C,MAAAA,mBAASlE,oBAAA,CAAA,OAClBmE,MAAAA,EACAjE,qBAAAA,KAAAA;AAEA,EAAA,IAAI;AACA,IAAA,MAAMH,SAAAA,CAAoBoE,MAAAA,EAAQjE,qBAAAA,CAAAA,CAAuBkE,UAAAA,EAAU;AACvE,EAAA,CAAA,CAAA,OAASC,KAAAA,EAAO;AACZC,IAAAA,OAAAA,CAAQD,KAAAA,CAAM,mCAA8BA,KAAAA,CAAAA;AAC5CrD,IAAAA,wBAAAA,CAAQc,KAAK,CAAA,CAAA;AACjB,EAAA;AACJ,CAAA,EAVsB,QAAA","file":"QTVV3LKQ.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}\n\ntype RegisterExtraCommands = (\n program: Command,\n parseGlobalOptions: (command: Command) => 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 = (command: Command): ToolCommandExecutionOptions => {\n const { cwd, volume, ...options } = command.opts<GlobalOptions>();\n\n return {\n ...options,\n cwd: cwd ?? process.cwd(),\n volumes: volume,\n versions: Object.fromEntries(\n Object.entries(options)\n .map(([name, version]) => [toolVersionOptions[name], version])\n .filter(([tool]) => tool),\n ),\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\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(context, tool.name, args, parseGlobalOptions(program));\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"]}
|