UNPKG

@shadow-dev/core

Version:

A modular core framework for Discord bot development, providing commands, buttons, menus, middleware, and more.

114 lines (113 loc) 4.23 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const inquirer_1 = __importDefault(require("inquirer")); const core_1 = require("@inquirer/core"); const commander_1 = require("commander"); const generation_js_1 = require("../utils/generation.js"); const initCommand = new commander_1.Command("init") .description("Command to create a new ShadowCore project") .action(async () => { let projectName = ""; let packageManager = "npm"; // Default package manager let tools = []; // Default tools let examples = []; // Default examples // Prompt the user for the project name try { const projectNameAnswer = await inquirer_1.default.prompt({ type: "input", name: "projectName", message: "What is the name of your project?", default: "my-shadowcore-project", validate: (input) => { if (input.trim() === "") { return "Project name cannot be empty."; } return true; }, }); projectName = projectNameAnswer.projectName; } catch (error) { if (error instanceof core_1.ExitPromptError) { // console.log('Prompt was canceled by the user.'); // You can exit or handle the cancellation here } else { console.error("An unexpected error occurred:", error); } } try { const packageManagerAnswer = await inquirer_1.default.prompt({ type: "list", name: "packageManager", message: "What package manager do you want to use?", choices: ["npm", "pnpm", "yarn", "bun"], filter(val) { return val; }, }); packageManager = packageManagerAnswer.packageManager; } catch (error) { if (error instanceof core_1.ExitPromptError) { // console.log('Prompt was canceled by the user.'); // You can exit or handle the cancellation here } else { console.error("An unexpected error occurred:", error); } } try { const toolsAnswer = await inquirer_1.default.prompt({ type: "checkbox", name: "tools", message: "Select the tools you want to install:", choices: [ { name: "TypeScript", value: "typescript" }, { name: "ESLint", value: "eslint" }, { name: "Prettier", value: "prettier" }, ], }); tools = toolsAnswer.tools; } catch (error) { if (error instanceof core_1.ExitPromptError) { // console.log('Prompt was canceled by the user.'); // You can exit or handle the cancellation here } else { console.error("An unexpected error occurred:", error); } } try { const examplesAnswer = await inquirer_1.default.prompt({ type: "checkbox", name: "examples", message: "Select the examples you want to install:", choices: [ { name: "Command Example", value: "command" }, { name: "Button Example", value: "button" }, { name: "Menu Example", value: "menu" }, { name: "Event Example", value: "event" }, { name: "Middleware Example", value: "middleware" }, ], }); examples = examplesAnswer.examples; } catch (error) { if (error instanceof core_1.ExitPromptError) { // console.log('Prompt was canceled by the user.'); // You can exit or handle the cancellation here } else { console.error("An unexpected error occurred:", error); } } // Call the generateProject function with the selected options await (0, generation_js_1.generateProject)(projectName, packageManager, tools, examples); // console.log(`You selected: ${packageManager}`); }); exports.default = initCommand;