@pecometer/peco-cli
Version:
Pecometer Command Line Interface Application
1 lines • 1.7 kB
JavaScript
;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;