dscaffold
Version:
A TypeScript framework for scaffolding modular Discord bot projects with dynamic command and event loading
67 lines • 2.86 kB
JavaScript
;
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