fargv
Version:
Multi-customizable parser of process.argv for nodejs.
103 lines (53 loc) • 1.85 kB
JavaScript
const isObject = require("../dependencies/isObject");
const isNumeric = require("../dependencies/isNumeric");
const errorsData = require("./data/_errors");
const prefix = "\n[fargv]: ";
const errorHandler = function (mainMessage, debugDetails, momentAction, code) {
if(isNumeric(mainMessage)) {
code = mainMessage;
mainMessage = errorsData[mainMessage];
} else if(Array.isArray(mainMessage)) {
[mainMessage, code] = mainMessage;
}
code = code || 0;
const objArg = {"argName": this.argName};
if(isObject(debugDetails)) {
if(debugDetails._noArgName) {
delete debugDetails._noArgName;
} else {
debugDetails = Object.assign(objArg, debugDetails);
}
} else {
debugDetails = Object.assign({}, objArg);
}
let result = prefix + mainMessage;
result += " Debug:\n";
for(const k in debugDetails) {
result += `${k}: ${debugDetails[k]}\n`;
}
if(this.usableOptions.rememberWarns) {
this.errors = this.errors || [];
this.errors.push(result);
}
let parseWarnArgs = {};
if(typeof this.usableOptions.parseWarn == "function") {
parseWarnArgs = {
mainMessage,
debugDetails,
code,
fullMessage: result,
};
}
if(momentAction == "throw") {
throw new Error(result);
} else if(momentAction == "warn") {
if(this.usableOptions.showWarns) console.warn(result);
if(typeof this.usableOptions.parseWarn == "function") this.usableOptions.parseWarn(parseWarnArgs);
} else if(momentAction == "auto") {
if(this.usableOptions.throwInsteadWarns) throw new Error(result);
else if(this.usableOptions.showWarns) console.warn(result);
if(typeof this.usableOptions.parseWarn == "function") this.usableOptions.parseWarn(parseWarnArgs);
}
return result
};
module.exports = errorHandler;