@kadena/kadena-cli
Version:
Kadena CLI tool to interact with the Kadena blockchain (manage keys, transactions, etc.)
71 lines • 3.03 kB
JavaScript
import { Option, program } from 'commander';
import { z } from 'zod';
import { createExternalPrompt } from '../../prompts/generic.js';
import { devnet as devnetPrompts } from '../../prompts/index.js';
import { createOption } from '../../utils/createOption.js';
import { ensureDevnetsConfiguration } from '../../utils/helpers.js';
import { log } from '../../utils/logger.js';
import { loadDevnetConfig } from './utils/devnetHelpers.js';
export const devnetOptions = {
devnet: createOption({
key: 'devnet',
prompt: devnetPrompts.devnetPrompt,
validation: z.string(),
option: new Option('-d, --devnet <devnet>', 'Devnet name'),
expand: async (devnet) => {
await ensureDevnetsConfiguration();
try {
return await loadDevnetConfig(devnet);
}
catch (e) {
log.warning(`\nNo devnet "${devnet}" found. Please create the devnet.\n`);
await program.parseAsync(['', '', 'devnet', 'create']);
const externalPrompt = createExternalPrompt({
devnetPrompt: devnetPrompts.devnetPrompt,
});
const devnetName = await externalPrompt.devnetPrompt();
return await loadDevnetConfig(devnetName);
}
},
}),
devnetName: createOption({
key: 'name',
prompt: devnetPrompts.devnetNamePrompt,
validation: z.string(),
option: new Option('-n, --name <name>', 'Devnet name (e.g. "devnet")'),
expand: async (name) => {
return { foo: 'bar' };
},
}),
devnetPort: createOption({
key: 'port',
prompt: devnetPrompts.devnetPortPrompt,
validation: z.number(),
option: new Option('-p, --port <port>', 'Port to forward to the Chainweb node API (default: 8080)').argParser((value) => parseInt(value, 10)),
}),
devnetUseVolume: createOption({
key: 'useVolume',
prompt: devnetPrompts.devnetUseVolumePrompt,
validation: z.boolean(),
option: new Option('-u, --useVolume', 'Create a persistent volume to mount to the container'),
}),
devnetMountPactFolder: createOption({
key: 'mountPactFolder',
prompt: devnetPrompts.devnetMountPactFolderPrompt,
validation: z.string(),
option: new Option('-m, --mountPactFolder <mountPactFolder>', 'Mount a folder containing Pact files to the container (e.g. "./pact", optional)'),
}),
devnetSelect: createOption({
key: 'name',
prompt: devnetPrompts.devnetSelectPrompt,
validation: z.string(),
option: new Option('-n, --name <name>', 'Devnet name'),
}),
devnetVersion: createOption({
key: 'version',
prompt: devnetPrompts.devnetVersionPrompt,
validation: z.string(),
option: new Option('-v, --version <version>', 'Version of the kadena/devnet Docker image to use (e.g. "latest")'),
}),
};
//# sourceMappingURL=devnetOptions.js.map