discord-template-generator
Version:
a template generate for discord.js command handler
128 lines (97 loc) • 3.93 kB
JavaScript
const prompt = require('prompts')
const fs = require('fs-extra')
const colors = require('colors')
const { program } = require('commander');
program.version('0.1.1'.red);
async function run() {
let category = await prompt({
type : "select",
name : "category",
message : "Pick a Category",
choices : ["Javascript"] ,
initial: 0
})
// console.log(name.name)
if(category.category === 0){
let response = {}
const templates = (await fs.readdir(`${process.mainModule.path}/templates/Javascript`)).map((template) => {
let info = require(`${process.mainModule.path}/templates/Javascript/${template}/template.json`);
if (typeof info === "undefined") {
info = require(`${process.mainModule.path}/templates/Javascript/${template}/package.json`);
}
info.dir = `${process.mainModule.path}/templates/Javascript/${template}`;
return info;
});
const questions = [{
type: "text",
name: "name",
initial: "project",
message: "project name?",
validate: value => value.length < 3 ? `Name have to be more than 3 characters` : true
}];
if (templates.length > 1) {
questions.push({
type: "select",
name: "template",
message: "Pick a template",
choices: templates.map((template) => ({
title: template.name,
description: template.description,
value: template.dir
})),
initial: 0
});
}
const onCancel = prompt => {
return true;
}
response = await prompt(questions, { onCancel });
if (typeof response.template === "undefined") {
response.template = templates[0].dir;
}
if (await fs.exists(response.name)) {
// Ask if we should override
const overwrite = await prompt({
type: 'confirm',
name: 'value',
message: 'You already have a project with that name do you want to overwrite it?',
initial: false
});
// Override the project if the user said yes
if (overwrite.value === true) {
// Remove old files
await fs.remove(response.name);
// Copy the template
await copyTemplate(response.name, response.template);
console.log('\n[+] Successfully Generated template!'.green)
}
} else {
await copyTemplate(response.name, response.template);
console.log('\n[+] Successfully Generated template!'.green)
}
}
}
async function copyTemplate(name, template) {
await fs.copy(template, name, {
filter: (src, dest) => {
if (src.includes("template.json"))
return false;
return true;
}
});
}
program
.option('-g, --gen', 'generate discord bot template')
.option('-h, --help', 'get help of the package!')
.option('-v, --version', 'version info of the package!')
program.parse(process.argv);
const options = program.opts();
if (options.gen){
run();
}
else if (options.help){
console.log('\nOptions:\n\n-h, --help, get help of the package!\n-v , --version, version info of the package!\n\nCommands:\n\n-g, --gen, generate discord bot template'.cyan)
}else {
console.log('\nOptions:\n\n-h, --help, get help of the package!\n-v , --version, version info of the package!\n\nCommands:\n\n-g, --gen, generate discord bot template'.cyan)
}