UNPKG

@sern/cli

Version:

Official CLI for @sern/handler

70 lines (61 loc) 3.34 kB
#!/usr/bin/env node import { Command } from 'commander'; import { yellowBright } from 'colorette'; export const program = new Command(); const importDynamic = async <T extends string>(filename: T) => import(`./commands/${filename}` as const); declare const __VERSION__: string; program .name('sern') .description(await importDynamic('help.js').then((m) => m.help)) .version(`sern CLI v${__VERSION__}`, '-v, --version') .exitOverride(() => process.exit(0)); program .command('init') .description(`Quickest way to scaffold a new project ${yellowBright('[DEPRECATED]')}`) .option('-y', 'Finishes setup as default') .option('-s, --sync', 'Syncs the project and generates sern.config.json') .action(async (...args) => importDynamic('init.js').then((m) => m.init(...args))); program .command('plugins') .description('Install plugins from https://github.com/sern-handler/awesome-plugins') .argument('[names...]', 'Names of plugins to install') .action((...args) => importDynamic('plugins.js').then((m) => m.plugins(...args))); program .command('extra') .description('Easy way to add extra things in your sern project') .action((...args) => importDynamic('extra.js').then((m) => m.extra(...args))); program // .command('commands') .description('Defacto way to manage your slash commands') .addCommand( new Command('publish') .description('New way to manage your slash commands') .option('-W --suppress-warnings', 'suppress experimental warning') .option('-i, --import [scriptPath...]', 'Prerequire a script to load into publisher') .option('-t, --token [token]') .argument('[path]', 'path with respect to current working directory that will locate all published files') .action(async (...args) => importDynamic('publish.js').then((m) => m.publish(...args))) ).addCommand( new Command('list') // .description('List all slash commands') .action(async (...args) => importDynamic('list.js').then((m) => m.list(...args)))) .addCommand( new Command('clear') .description('Clear and reset commands-data-remote.json and the api') .option('-y, --yes', "Say yes to all prompts") .option('-e, --env [path]', "Supply a path to a .env") .action(async (...args) => importDynamic('command-clear.js').then((m) => m.commandClear(...args)))); program .command('build') .description('Build your bot') .option('-f --format [fmt]', 'The module system of your application. `cjs` or `esm`', 'esm') .option('-m --mode [mode]', 'the mode for sern to build in. `production` or `development`', 'development') .option('-w --watch') .option('--watch-command [cmd]', 'the command for sern to watch. if watch is not enabled, an error is thrown', '') .option('-W --suppress-warnings', 'suppress experimental warning') .option('-p --project [filePath]', 'build with the provided sern.build file') .option('-e --env', 'path to .env file') .option('--source-maps', 'Whether to add source-maps to configuration', false) .option('--tsconfig [filePath]', 'Use this tsconfig') .action(async (...args) => importDynamic('build.js').then((m) => m.build(...args))); program.parse();