Sha256: d7f8752ecd0a19749479e01cc5db812f04aca212897625331758084f6d43eb57
Contents?: true
Size: 1.36 KB
Versions: 33
Compression:
Stored size: 1.36 KB
Contents
// This is an example of using tokens to add a custom behaviour. // // This adds a option order check so that --some-unstable-option // may only be used after --enable-experimental-options // // Note: this is not a common behaviour, the order of different options // does not usually matter. import { parseArgs } from '../index.js'; function findTokenIndex(tokens, target) { return tokens.findIndex((token) => token.kind === 'option' && token.name === target ); } const experimentalName = 'enable-experimental-options'; const unstableName = 'some-unstable-option'; const options = { [experimentalName]: { type: 'boolean' }, [unstableName]: { type: 'boolean' }, }; const { values, tokens } = parseArgs({ options, tokens: true }); const experimentalIndex = findTokenIndex(tokens, experimentalName); const unstableIndex = findTokenIndex(tokens, unstableName); if (unstableIndex !== -1 && ((experimentalIndex === -1) || (unstableIndex < experimentalIndex))) { throw new Error(`'--${experimentalName}' must be specified before '--${unstableName}'`); } console.log(values); /* eslint-disable max-len */ // Try the following: // node ordered-options.mjs // node ordered-options.mjs --some-unstable-option // node ordered-options.mjs --some-unstable-option --enable-experimental-options // node ordered-options.mjs --enable-experimental-options --some-unstable-option
Version data entries
33 entries across 33 versions & 1 rubygems