【问题标题】:Setup command line completion with yargs使用 yargs 设置命令行完成
【发布时间】:2015-08-27 19:57:00
【问题描述】:

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

completion section of the yargs documentation 说:“将生成的脚本连接到您的 .bashrc 或 .bash_profile”

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

【问题讨论】:

    标签: node.js command-line-arguments yargs


    【解决方案1】:

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

    安装 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
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    相关资源
    最近更新 更多