enhancement: provide list of allowed flags of current executable
It'd be useful for Mocha and other certain CLI applications to have a list of supported flags of the current process available.
Many users which to execute a CLI app like mocha
with Node.js flags, e.g. --experimental-modules
. Mocha spawns a node
process with any requested flags in place, and Mocha loads/runs JavaScript files from within this child process (there may be better ways to do this, but that's not what this issue is about; please put your ideas in Mocha's issue tracker
This puts a maintenance burden on Mocha to explicitly add support for new Node.js flags (I can provide a list of PRs over the years, but this is basically a 1:1 relationship between new Node.js flags and pull requests).
These flags appear in mocha --help
. Mocha is unable to remove any flags unless it maintained a lookup of Node.js-version-to-allowed-flags itself (FWIW, I'm unsure if Node.js has ever actually removed a flag).
(Mocha could simply support something like --node-flags='--harmony --trace-warnings'
option, but this a little too user-hostile for my taste, and doesn't solve the problem of listing the flags.)
Flags listed under --v8-options
are not shown in mocha --help
, because Mocha can blindly pass through any flag matching ^--v8-.*
. In the context of this issue, I'm not proposing v8-specific flags are listed.
These two issues (adding new flags, removing old ones) could be mitigated (going forward) if Node.js provided information on allowed flags in its current executable via an Array in process
. For example:
> process.allowedFlags
[
{
name: 'v',
alias: 'version',
description: 'print Node.js version'
},
{
name: 'napi-modules',
description: 'load N-API modules (no-op - option kept for compatibility)'
},
{
name: 'trace-warnings',
description: 'show stack traces on process warnings'
}
// etc etc
]
Mocha and other CLI apps like it could consume this information and use it to allow/disallow flags as well as print the information in a "help" page.
Reasonable?