Spaces:
Sleeping
Sleeping
pythonic-rag-FastAPIReact
/
frontend
/node_modules
/@pkgjs
/parseargs
/examples
/ordered-options.mjs
| // 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 | |