用yargs设置命令行完成

我使用节点JS创build脚本,并希望使用yargs启用asynchronous命令行完成。

yargs文档的完成部分说: “将生成的脚本连接到.bashrc或.bash_profile”

但是我没有看到有关如何生成脚本的任何信息。

文件不完全清楚如何做到这一点,但我明白了。

安装yargs

npm install -g yargs 

创build你的脚本(例如script.js

 #! /usr/local/bin/node var argv = require('yargs') .completion('completion', function(current, argv, done) { setTimeout(function() { done([ 'apple', 'banana' ]); }, 500); }) .argv; 

保存您的脚本并设置权限

 chmod +x script.js 

在命令行中,将命令名称(完成调用中的第一个参数)作为第一个parameter passing给脚本。

 ./script.js completion 

这将输出命令行补全块添加到.bashrc或.bash_profile

 _yargs_completions() { local cur_word args type_list cur_word="${COMP_WORDS[COMP_CWORD]}" args=$(printf "%s " "${COMP_WORDS[@]}") # ask yargs to generate completions. type_list=`./shan.js --get-yargs-completions $args` COMPREPLY=( $(compgen -W "${type_list}" -- ${cur_word}) ) # if no match was found, fall back to filename completion if [ ${#COMPREPLY[@]} -eq 0 ]; then COMPREPLY=( $(compgen -f -- "${cur_word}" ) ) fi return 0 }