UNPKG

@nomadmystic/wordpress-scaffold-cli

Version:

This project is created to speed up WordPress development

64 lines (63 loc) 2.57 kB
#!/usr/bin/env node import fs from 'fs'; import { execSync } from 'child_process'; import { Command, Option } from 'commander'; import FileUtils from '../utils/file-utils.js'; import { packageRootDir } from '../utils/package-root.js'; import CommanderOptions from '../config/commander-options.js'; class CommanderCli { static buildCommanderCli = async () => { try { const program = await this.buildProgram(); const inputs = program?.parse(); const options = program?.opts() ? program.opts() : {}; const cliOptions = Object.keys(CommanderOptions); const userInputs = Object.keys(options); if (userInputs && userInputs.length > 1) { console.log('Only one option can be used at a time! See --help'); process.exit(1); } if (options && typeof options !== 'undefined' && cliOptions.includes(userInputs[0])) { await this.callCommand(userInputs[0]); } } catch (err) { console.log('CommanderCli.buildCommanderCli()'); console.error(err); } }; static buildProgram = async () => { try { const program = new Command(); const packageFile = await FileUtils.getFileAsJson(`${packageRootDir}/package.json`); program.description('CLI for scaffolding WordPress websites'); program.name('wps'); program.version(packageFile.version); program.allowUnknownOption(true); program.addOption(new Option('-pi, --project-init', 'Call the Project Init command')); program.addOption(new Option('-t, --theme', 'Call the Theme command')); program.addOption(new Option('-p, --plugin', 'Call the Plugin command')); return program; } catch (err) { console.log('CommanderCli.buildCommander()'); console.error(err); } }; static callCommand = async (command) => { try { const path = CommanderOptions[command].path; const fullPath = `${packageRootDir}/dist/${path}`; if (!fs.existsSync(fullPath)) { console.log('Path to command doesn\'t! Contact the maintainer'); process.exit(1); } execSync(fullPath, { stdio: 'inherit' }); } catch (err) { console.log('CommanderCli.callCommand()'); console.error(err); } }; } await CommanderCli.buildCommanderCli();