diff --git a/opter.js b/opter.js index cab68c7..32e29a1 100644 --- a/opter.js +++ b/opter.js @@ -15,6 +15,7 @@ const defaultErrorMessages = { tooManyArguments: (optionName) => `Too many arguments for option ${optionName}`, } +// TODO figure out how to avoid having to use '.opts to access the output of this' module.exports = class Opts { constructor(argv) { @@ -73,6 +74,7 @@ module.exports = class Opts { **/ requireOptionArgument(nameWithDashes, minRequired=1, maxRequired=1, tooFewMessage=null, tooManyMessage=null) { let name = stripDashes(nameWithDashes); + // FIXME have to check synonyms, too if (name in this.opts) { console.log('type', typeof this.opts[name] === 'boolean'); console.log(this.opts[name]); @@ -86,6 +88,14 @@ module.exports = class Opts { } return true; } + + contains(nameWithDashes) { + const name = stripDashes(nameWithDashes); + console.log('synonyms:', this.synonyms); + if (name in this.opts) return true; + if (name in this.synonyms) return true; + return false; + } } /** diff --git a/test.js b/test.js index f6f0e38..85c1265 100644 --- a/test.js +++ b/test.js @@ -8,9 +8,10 @@ const Opter = require('./opter.js'); const opts = new Opter(process.argv) opts.synonymize('-i', '--input'); +opts.synonymize('-d', '--debug'); opts.requireOption('-i'); opts.requireOptionArgument('-i'); -console.log(opts.opts); +console.log('contains', opts.contains('-d')); // const _defaultErrorMessages = { // missingRequiredOption: (optionName) => `Missing required option '${optionName}'`,