UNPKG

dis-cli

Version:

A package for easily generating discord bot projects

96 lines (75 loc) 2.82 kB
const path = require('path') const EventEmitter = require('events'); const { log, clear } = console const executeCommand = require('../util/executeCommand'); const package_info = require('package-info'); const getVersion = async (name) => (await package_info(name)).version const fs = require('fs-extra'); const writeFile = require('../util/writeFile'); const chalk = require('chalk'); const inquirer = require('inquirer'); const createDir = (name) => fs.mkdirSync(name); module.exports = class Creator extends EventEmitter { constructor(name, context, ops = {}) { super() this.name = name; this.context = context; this.ops = ops; } async create(options = {}) { const { name, context } = this const pm = this.ops.pm; const installSyntax = pm === 'yarn' ? 'install' : 'i'; const packageAdd = pm === 'yarn' ? 'add' : 'i'; const pmx = pm ==='yarn' ? 'yarn' :'npx'; fs.readdir(context, (err, files) => { if(err) throw err; if(files.length !== 0) { console.log(chalk.red('Directory is not empty')); return process.exit(); } }) await clear() log(`✨ Generating files`) // generate package.json with plugin dependencies const pkg = { name, version: '0.1.0', private: true, scripts: { start: 'node index.js' }, dependencies: { 'discord.js': await getVersion('discord.js'), 'dotenv': '8.2.0' } } await writeFile(context, { 'package.json': JSON.stringify(pkg, null, 2), 'README.md': `# Discord Bot`, 'index.js': require('../util/generateIndex')(), '.env': 'TOKEN=YOUR_TOKEN_HER' }) createDir('commands'); createDir('util'); ['General', 'Moderation', 'Owner', 'Config'].forEach(dir => { createDir(`commands/${dir}`); }) await writeFile(path.join(context, 'commands', 'General'), { 'ping.js': require('../util/generatePing')() }); await writeFile(path.join(context, 'util'), { 'Command.js': require('../util/generateCommandFile')() }); log('✨ Installing Dependencies') await executeCommand(`${pm} ${installSyntax}`); // log instructions log() log(`🎉 Successfully created project ${chalk.yellow(name)}.`) log( `👉 Start your bot up by:\n\n` + chalk.cyan(` ${chalk.gray('$')} ${pm} start`) ) log() } }