UNPKG

dscaffold

Version:

A TypeScript framework for scaffolding modular Discord bot projects with dynamic command and event loading

67 lines 2.86 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const chalk_1 = __importDefault(require("chalk")); const create_1 = require("./commands/create"); const generate_1 = require("./commands/generate"); const package_json_1 = require("../package.json"); const program = new commander_1.Command(); program .name('dscaffold') .description('A TypeScript framework for scaffolding modular Discord bot projects with dynamic loading') .version(package_json_1.version); // Main create command program .command('create [project-name]') .description('Create a new Discord bot project') .option('-t, --template <template>', 'Use a specific template (basic, advanced)', 'basic') .option('-l, --language <language>', 'Choose language (typescript, javascript)', 'typescript') .option('--skip-install', 'Skip npm install') .action(create_1.createProject); // Generate subcommands const generateCmd = program .command('generate') .alias('g') .description('Generate components for your Discord bot'); generateCmd .command('command <name>') .description('Generate a new command') .option('-c, --category <category>', 'Command category', 'general') .option('-d, --description <description>', 'Command description') .option('--slash', 'Generate as slash command') .action((name, options) => (0, generate_1.generateCommand)('command', name, options)); generateCmd .command('event <name>') .description('Generate a new event handler') .option('-o, --once', 'Event runs only once') .action((name, options) => (0, generate_1.generateCommand)('event', name, options)); generateCmd .command('schema <name>') .description('Generate a database schema/model') .option('-t, --type <type>', 'Database type (mongoose, prisma, sequelize)', 'mongoose') .action((name, options) => (0, generate_1.generateCommand)('schema', name, options)); // Error handling program.on('command:*', () => { console.error(chalk_1.default.red(`Invalid command: ${program.args.join(' ')}`)); console.log(chalk_1.default.yellow('See --help for a list of available commands.')); process.exit(1); }); // Handle errors process.on('uncaughtException', (error) => { console.error(chalk_1.default.red('Unexpected error:'), error.message); process.exit(1); }); process.on('unhandledRejection', (reason) => { console.error(chalk_1.default.red('Unhandled promise rejection:'), reason); process.exit(1); }); program.parse(process.argv); // Show help if no command provided if (!process.argv.slice(2).length) { program.outputHelp(); } //# sourceMappingURL=cli.js.map