diff --git a/lib/bcoin/config.js b/lib/bcoin/config.js index 12066cb7..cbc5e9aa 100644 --- a/lib/bcoin/config.js +++ b/lib/bcoin/config.js @@ -122,7 +122,7 @@ config.parseData = function parseData(data) { // Logger options.logLevel = str(data.loglevel); options.logConsole = bool(data.logconsole); - options.logFile = boolstr(data.logfile); + options.logFile = boolpath(data.logfile); // Node options.prefix = path(data.prefix); @@ -222,13 +222,13 @@ config.parseText = function parseText(text) { } key = key.replace(/\-/g, '').toLowerCase(); - alias = config.alias.conf[key]; + alias = config.alias.conf[key]; if (alias) key = alias; if (value.length === 0) - value = null; + continue; data[key] = value; } @@ -246,11 +246,8 @@ config.parseArg = function parseArg(argv) { var data = {}; var arg, key, value, alias; - if (!argv) { - if (utils.isBrowser) - return data; + if (!argv) argv = process.argv; - } argv = argv.slice(); @@ -261,17 +258,25 @@ config.parseArg = function parseArg(argv) { // e.g. --opt arg = arg.split('='); key = arg[0]; + if (arg.length > 1) { // e.g. --opt=val value = arg.slice(1).join('=').trim(); } else { value = 'true'; } + key = key.replace(/\-/g, ''); + alias = config.alias.arg[key]; if (alias) key = alias; + + if (value.length === 0) + continue; + data[key] = value; + continue; } @@ -291,8 +296,14 @@ config.parseArg = function parseArg(argv) { } // e.g. foo - if (key) - data[key] = arg; + if (key) { + value = arg.trim(); + + if (value.length === 0) + continue; + + data[key] = value; + } } return config.parseData(data); @@ -319,15 +330,18 @@ config.parseEnv = function parseEnv(env) { if (key.indexOf('BCOIN_') !== 0) continue; - value = env[key]; + value = env[key].trim(); key = key.substring(6); key = key.replace(/_/g, '').toLowerCase(); - alias = config.alias.env[key]; + alias = config.alias.env[key]; if (alias) key = alias; + if (value.length === 0) + continue; + data[key] = value; } @@ -353,14 +367,21 @@ function path(value) { function bool(value) { if (!value) return null; - return value === 'true' || value === '1'; + + if (value === 'true' || value === '1') + return true; + + if (value === 'false' || value === '0') + return false; + + return null; } function num(value) { - if (value == null) + if (!value) return null; - value = parseInt(value, 10); + value = +value; if (!isFinite(value)) return null; @@ -368,7 +389,7 @@ function num(value) { return value; } -function boolstr(value) { +function boolpath(value) { if (!value) return null; @@ -385,14 +406,12 @@ function file(value) { if (!fs) return null; + value = path(value); + if (!value) return null; - try { - return fs.readFileSync(path(value)); - } catch (e) { - return null; - } + return fs.readFileSync(value); } function readFile(file) {