@nomadmystic/wordpress-scaffold-cli
Version:
This project is created to speed up WordPress development
94 lines (71 loc) • 2.58 kB
text/typescript
// 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;