@kadena/kadena-cli
Version:
Kadena CLI tool to interact with the Kadena blockchain (manage keys, transactions, etc.)
88 lines • 3.79 kB
JavaScript
import { Option } from 'commander';
import { z } from 'zod';
import { networks } from '../../prompts/index.js';
import { createOption } from '../../utils/createOption.js';
import { isNotEmptyString } from '../../utils/globalHelpers.js';
import { loadNetworkConfig } from './utils/networkHelpers.js';
export const networkOptions = {
networkName: createOption({
key: 'networkName',
prompt: networks.networkNamePrompt,
validation: z.string(),
option: new Option('-a, --network-name <networkName>', 'Kadena network (e.g. "mainnet")'),
transform: (networkName) => {
const trimmedNetworkName = networkName.trim();
if (isNotEmptyString(trimmedNetworkName)) {
return trimmedNetworkName;
}
throw new Error('Network name is required');
},
}),
networkId: createOption({
key: 'networkId',
prompt: networks.networkIdPrompt,
validation: z.string(),
option: new Option('-i, --network-id <networkId>', 'Kadena network Id (e.g. "mainnet01")'),
transform: (networkId) => {
return networkId === null || networkId === void 0 ? void 0 : networkId.trim();
},
}),
networkHost: createOption({
key: 'networkHost',
prompt: networks.networkHostPrompt,
validation: z.string(),
option: new Option('-s, --network-host <networkHost>', 'Kadena network host (e.g. "https://api.chainweb.com")'),
transform: (value) => {
// when it's optional and it's empty string and we don't want to validate it
if (isNotEmptyString(value)) {
const parse = z.string().url().safeParse(value.trim());
if (!parse.success) {
throw new Error('Network host: Invalid URL. Please enter a valid URL.');
}
}
return value.trim();
},
}),
networkExplorerUrl: createOption({
key: 'networkExplorerUrl',
prompt: networks.networkExplorerUrlPrompt,
validation: z.string().optional(),
option: new Option('-e, --network-explorer-url <networkExplorerUrl>', 'Kadena network explorer URL (e.g. "https://explorer.chainweb.com/mainnet/tx/")'),
}),
networkOverwrite: createOption({
key: 'networkOverwrite',
prompt: networks.networkOverwritePrompt,
validation: z.string(),
option: new Option('-o, --network-overwrite <networkOverwrite>', 'Overwrite existing network configuration (yes/no)'),
}),
networkDelete: createOption({
key: 'networkDelete',
prompt: networks.networkDeletePrompt,
validation: z.string(),
option: new Option('-d, --network-delete <networkDelete>', 'Delete the configuration for network (yes/no)'),
}),
networkDefaultConfirmation: createOption({
key: 'confirm',
prompt: networks.networkDefaultConfirmationPrompt,
validation: z.boolean(),
option: new Option('-c, --confirm', 'Confirm to set/unset the network as default'),
}),
networkSelectWithNone: createOption({
key: 'network',
prompt: networks.networkSelectWithNonePrompt,
defaultIsOptional: false,
validation: z.string(),
option: new Option('-n, --network <network>', 'Kadena network (e.g. "mainnet")'),
expand: async (network) => {
try {
if (network === 'none')
return null;
return await loadNetworkConfig(network);
}
catch (e) {
throw new Error(`No network configuration found for "${network}". Please create a "${network}" network.`);
}
},
}),
};
//# sourceMappingURL=networkOptions.js.map