tools: add bash completion for node
This commit adds a --completion-bash option to node which can be sourced to provide bash code completion for node options. Usage: $ node --completion-bash > node_bash_completion $ source node_bash_completion $ node --[tab] PR-URL: https://github.com/nodejs/node/pull/20713 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Denys Otrishko <shishugi@gmail.com>
This commit is contained in:
parent
408e8ce22c
commit
56493bf1eb
@ -52,6 +52,17 @@ If this flag is passed, the behavior can still be set to not abort through
|
|||||||
[`process.setUncaughtExceptionCaptureCallback()`][] (and through usage of the
|
[`process.setUncaughtExceptionCaptureCallback()`][] (and through usage of the
|
||||||
`domain` module that uses it).
|
`domain` module that uses it).
|
||||||
|
|
||||||
|
### `--completion-bash`
|
||||||
|
<!-- YAML
|
||||||
|
added: REPLACEME
|
||||||
|
-->
|
||||||
|
|
||||||
|
Print source-able bash completion script for Node.js.
|
||||||
|
```console
|
||||||
|
$ node --completion-bash > node_bash_completion
|
||||||
|
$ source node_bash_completion
|
||||||
|
```
|
||||||
|
|
||||||
### `--enable-fips`
|
### `--enable-fips`
|
||||||
<!-- YAML
|
<!-- YAML
|
||||||
added: v6.0.0
|
added: v6.0.0
|
||||||
|
@ -75,6 +75,9 @@ the next argument will be used as a script filename.
|
|||||||
.It Fl -abort-on-uncaught-exception
|
.It Fl -abort-on-uncaught-exception
|
||||||
Aborting instead of exiting causes a core file to be generated for analysis.
|
Aborting instead of exiting causes a core file to be generated for analysis.
|
||||||
.
|
.
|
||||||
|
.It Fl -completion-bash
|
||||||
|
Print source-able bash completion script for Node.js.
|
||||||
|
.
|
||||||
.It Fl -enable-fips
|
.It Fl -enable-fips
|
||||||
Enable FIPS-compliant crypto at startup.
|
Enable FIPS-compliant crypto at startup.
|
||||||
Requires Node.js to be built with
|
Requires Node.js to be built with
|
||||||
|
25
lib/internal/bash_completion.js
Normal file
25
lib/internal/bash_completion.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
'use strict';
|
||||||
|
const { internalBinding } = require('internal/bootstrap/loaders');
|
||||||
|
const { getOptions } = internalBinding('options');
|
||||||
|
|
||||||
|
function print(stream) {
|
||||||
|
const { options, aliases } = getOptions();
|
||||||
|
const all_opts = [...options.keys(), ...aliases.keys()];
|
||||||
|
|
||||||
|
stream.write(`_node_complete() {
|
||||||
|
local cur_word options
|
||||||
|
cur_word="\${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
if [[ "\${cur_word}" == -* ]] ; then
|
||||||
|
COMPREPLY=( $(compgen -W '${all_opts.join(' ')}' -- "\${cur_word}") )
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
COMPREPLY=( $(compgen -f "\${cur_word}") )
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
complete -F _node_complete node node_g`);
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
print
|
||||||
|
};
|
@ -111,11 +111,17 @@
|
|||||||
NativeModule.require('internal/inspector_async_hook').setup();
|
NativeModule.require('internal/inspector_async_hook').setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (internalBinding('options').getOptions('--help')) {
|
const options = internalBinding('options');
|
||||||
|
if (options.getOptions('--help')) {
|
||||||
NativeModule.require('internal/print_help').print(process.stdout);
|
NativeModule.require('internal/print_help').print(process.stdout);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (options.getOptions('--completion-bash')) {
|
||||||
|
NativeModule.require('internal/bash_completion').print(process.stdout);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (isMainThread) {
|
if (isMainThread) {
|
||||||
mainThreadSetup.setupChildProcessIpcChannel();
|
mainThreadSetup.setupChildProcessIpcChannel();
|
||||||
}
|
}
|
||||||
|
1
node.gyp
1
node.gyp
@ -84,6 +84,7 @@
|
|||||||
'lib/zlib.js',
|
'lib/zlib.js',
|
||||||
'lib/internal/assert.js',
|
'lib/internal/assert.js',
|
||||||
'lib/internal/async_hooks.js',
|
'lib/internal/async_hooks.js',
|
||||||
|
'lib/internal/bash_completion.js',
|
||||||
'lib/internal/buffer.js',
|
'lib/internal/buffer.js',
|
||||||
'lib/internal/cli_table.js',
|
'lib/internal/cli_table.js',
|
||||||
'lib/internal/child_process.js',
|
'lib/internal/child_process.js',
|
||||||
|
@ -221,6 +221,9 @@ PerProcessOptionsParser::PerProcessOptionsParser() {
|
|||||||
kAllowedInEnvironment);
|
kAllowedInEnvironment);
|
||||||
|
|
||||||
AddOption("--security-reverts", "", &PerProcessOptions::security_reverts);
|
AddOption("--security-reverts", "", &PerProcessOptions::security_reverts);
|
||||||
|
AddOption("--completion-bash",
|
||||||
|
"print source-able bash completion script",
|
||||||
|
&PerProcessOptions::print_bash_completion);
|
||||||
AddOption("--help",
|
AddOption("--help",
|
||||||
"print node command line options",
|
"print node command line options",
|
||||||
&PerProcessOptions::print_help);
|
&PerProcessOptions::print_help);
|
||||||
|
@ -112,6 +112,7 @@ class PerProcessOptions {
|
|||||||
bool zero_fill_all_buffers = false;
|
bool zero_fill_all_buffers = false;
|
||||||
|
|
||||||
std::vector<std::string> security_reverts;
|
std::vector<std::string> security_reverts;
|
||||||
|
bool print_bash_completion = false;
|
||||||
bool print_help = false;
|
bool print_help = false;
|
||||||
bool print_v8_help = false;
|
bool print_v8_help = false;
|
||||||
bool print_version = false;
|
bool print_version = false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user