用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 }