@pecometer/peco-cli
Version:
Pecometer Command Line Interface Application with monorepo support
5 lines • 1.76 kB
JavaScript
;
/**
* @author Sean Hutchinson
* @copyright Pecometer Software Ltd
*/Object.defineProperty(exports,"__esModule",{value:!0}),exports.CBaseCommand=void 0;const output_type_1=require("./../enums/output-type");class CBaseCommand{output(data,type,newLine=!0){switch(newLine&&this.outputNewLine(),type){case output_type_1.OutputType.Info:process.stdout.write(`[36m${data.toString()}[0m`);break;case output_type_1.OutputType.Notice:process.stdout.write(`[32m${data.toString()}[0m`);break;case output_type_1.OutputType.Error:process.stdout.write(`[31m${data.toString()}[0m`);break;case output_type_1.OutputType.Warning:process.stdout.write(`[33m${data.toString()}[0m`);break;default:process.stdout.write(data.toString())}}outputNewLine(){process.stdout.write("\n")}info(data,newLine=!0){this.output(data,output_type_1.OutputType.Info,newLine)}notice(data,newLine=!0){this.output(data,output_type_1.OutputType.Notice,newLine)}error(data,newLine=!0){this.output(data,output_type_1.OutputType.Error,newLine)}warn(data,newLine=!0){this.output(data,output_type_1.OutputType.Warning,newLine)}async shutdown(){}async waitForPrompt(){return new Promise(resolve=>{process.stdin.resume(),process.stdin.once("data",data=>{process.stdin.pause(),resolve(data.toString().trim())})})}async waitForYesNo(){return new Promise(resolve=>{process.stdin.resume(),process.stdin.once("data",data=>{const response=data.toString().trim();return process.stdin.pause(),"y"===response.toLowerCase()||"yes"===response.toLowerCase()?resolve(!0):"n"===response.toLowerCase()||"no"===response.toLowerCase()||""===response.toLowerCase()?resolve(!1):(this.warn('Please enter "Y" / "Yes" for yes, or "N" / No" for no: (N)'),this.waitForYesNo())})})}}exports.CBaseCommand=CBaseCommand;