UNPKG

@nomadmystic/wordpress-scaffold-cli

Version:

This project is created to speed up WordPress development

94 lines (71 loc) 2.58 kB
// Community modules import 'dotenv/config'; import inquirer from 'inquirer'; import colors from 'colors'; // Interfaces import InitAnswers from '../interfaces/project/interface-init-answers.js'; import ThemeAnswers from '../interfaces/theme/interface-theme-answers.js'; /** * @class ProjectInit */ class InquirerCli { /** * @description Starting point for building in the initial WordPress site * @public * @author Keith Murphy | nomadmystics@gmail.com * * @param {Array<any> | undefined} options * @return {Promise<InitAnswers | ThemeAnswers | void>} */ public static performPromptsTasks = async (options: Array<any> | undefined): Promise<InitAnswers | ThemeAnswers | void> => { try { const inquirer = await this.getInquirer(); const answers: InitAnswers | ThemeAnswers | void = await this.performPrompt(inquirer, options); return answers; } catch (err) { console.log(colors.red('ProjectInit.performAllTasks()')); console.error(err); } }; /** * @description Get our inquirer object * @private * @author Keith Murphy | nomadmystics@gmail.com * * @return Promise<any> */ private static getInquirer = async (): Promise<any> => { try { return inquirer; } catch (err: any) { console.log(colors.red('ProjectInit.getInquirer()')); console.error(err); } } /** * @description Display and gather our prompts from the user * @private * @author Keith Murphy | nomadmystics@gmail.com * * @param {any} inquirer * @param {Promise<Array<any> | undefined>} options * @return {Promise<InitAnswers | ThemeAnswers | void>} */ private static performPrompt = async (inquirer: any, options: Array<any> | undefined): Promise<InitAnswers | ThemeAnswers | void> => { try { return inquirer.prompt(options) .catch((error: any): void => { if (error.isTtyError) { console.error('Prompt couldn\'t be rendered in the current environment.'); } else { console.log(colors.red('ProjectInit.performPrompt().prompt()')); console.error(error); } }); } catch (err: any) { console.log(colors.red('ProjectInit.performPrompt()')); console.error(err); } }; } export default InquirerCli;