@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
JavaScript
"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;