UNPKG

plugin.js

Version:

custom plugin generator

69 lines (62 loc) 2.66 kB
#!/usr/bin/env node const prompts = require('prompts'); const { red, greenBright, blue, yellow } = require('chalk'); const { writeFileSync, existsSync, mkdirSync } = require('fs'); require('./templates/first_level'); require('./templates/second_level'); require('./templates/third_level'); require('./utils'); const cwd = process.cwd(); console.log(yellow('******STARTING******')); const dirHelper = (dir) => { console.log(blue.bold(`checking if ${fwd(dir)} exists`)); if (!existsSync(dir)) { console.log(greenBright(`creating ${fwd(dir)}`)); mkdirSync(dir, { recursive: true }); } else { console.log(red(`Error: ${fwd(dir)} already exists`)); throw Error('directory already exists'); } } const questions = [ { type: 'text', name: 'plugin', message: `Enter plugin's name: ` }, { type: prev => prev == 'pizza' ? 'text' : null, name: 'topping', message: 'Name a topping' } ]; (async () => { const { plugin } = await prompts(questions); const snakeCased = snakeCase(plugin); //writing first level files const first_dir = cwd + `/${snakeCased}`; dirHelper(first_dir); console.log(blue(`starting to write files in ${fwd(first_dir)}..`)); writeFileSync(first_dir + '/package.json', package_json(plugin)); writeFileSync(first_dir + '/index.js', index(plugin)); console.log(greenBright(`files written successfully in ${fwd(first_dir)}`)); //writing second level files const second_dir = first_dir + '/Public'; dirHelper(second_dir); console.log(blue(`starting to write files in ${fwd(second_dir)}..`)); const second_file = second_dir + `/${snakeCased}`; writeFileSync(second_file + '_controller.js', controller(plugin)); writeFileSync(second_file + '_params.html', params_html(plugin)); writeFileSync(second_file + '_params.js', params_js(plugin)); writeFileSync(second_file + '.html', main_html(plugin)); writeFileSync(second_file + '.js', main_js(plugin)); writeFileSync(second_file + '_sidebar.html', sidebar_html(plugin)); console.log(greenBright(`files written successfully in ${fwd(second_dir)}`)); //writing third level files const third_dir = second_dir + '/Styles'; dirHelper(third_dir); console.log(blue(`starting to write files in ${fwd(third_dir)}..`)); writeFileSync(third_dir + `/${snakeCased}.css`, styles_css(plugin)); console.log(greenBright(`files written successfully in ${fwd(third_dir)}`)); console.log(greenBright('******COMPLETED******')); })();