Add 'contains' function

This commit is contained in:
n loewen 2023-09-02 16:11:10 -04:00
parent c2ea099bbf
commit b9e15019c0
2 changed files with 12 additions and 1 deletions

View File

@ -15,6 +15,7 @@ const defaultErrorMessages = {
tooManyArguments: (optionName) => `Too many arguments for option ${optionName}`, tooManyArguments: (optionName) => `Too many arguments for option ${optionName}`,
} }
// TODO figure out how to avoid having to use '<options>.opts to access the output of this'
module.exports = class Opts { module.exports = class Opts {
constructor(argv) { constructor(argv) {
@ -73,6 +74,7 @@ module.exports = class Opts {
**/ **/
requireOptionArgument(nameWithDashes, minRequired=1, maxRequired=1, tooFewMessage=null, tooManyMessage=null) { requireOptionArgument(nameWithDashes, minRequired=1, maxRequired=1, tooFewMessage=null, tooManyMessage=null) {
let name = stripDashes(nameWithDashes); let name = stripDashes(nameWithDashes);
// FIXME have to check synonyms, too
if (name in this.opts) { if (name in this.opts) {
console.log('type', typeof this.opts[name] === 'boolean'); console.log('type', typeof this.opts[name] === 'boolean');
console.log(this.opts[name]); console.log(this.opts[name]);
@ -86,6 +88,14 @@ module.exports = class Opts {
} }
return true; 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;
}
} }
/** /**

View File

@ -8,9 +8,10 @@ const Opter = require('./opter.js');
const opts = new Opter(process.argv) const opts = new Opter(process.argv)
opts.synonymize('-i', '--input'); opts.synonymize('-i', '--input');
opts.synonymize('-d', '--debug');
opts.requireOption('-i'); opts.requireOption('-i');
opts.requireOptionArgument('-i'); opts.requireOptionArgument('-i');
console.log(opts.opts); console.log('contains', opts.contains('-d'));
// const _defaultErrorMessages = { // const _defaultErrorMessages = {
// missingRequiredOption: (optionName) => `Missing required option '${optionName}'`, // missingRequiredOption: (optionName) => `Missing required option '${optionName}'`,