6

我正在使用节点 JS 创建一个脚本,并希望使用yargs启用异步命令行完成。

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

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

4

1 回答 1

8

文档并不完全清楚如何做到这一点,但我想通了。

安装 yargs

npm install -g yargs

创建你的脚本(例如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

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

./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
}
于 2015-08-27T22:53:34.377 回答