2017-12-01 4 views
3

検索の時間がたってから、私は最初のstackoverflowの質問を書いた。オートコンプリート・ブースト・プログラムのオプション

これまでのところ、bashスクリプトの補完機能を作成したいと思っています;)。 このbashスクリプトは、独自のオートコンプリートを持つ他の実行可能ファイルを呼び出します。

例:

$ my_script foo par 
    # calls /usr/local/libexec/my_script/foo par 

(この場合は "foo" という)my_scriptというの最初のパラメータをオートコンプリート機能し、可能なオプションは、フォルダ内のファイルであるため、 "は/ usr/local/libexecに/ my_scriptという/" 。 このフォルダ内の各プログラムは、boost :: program_optionsを使用して副産物として動作する自動補完機能を持っています。

ここで、呼び出すプログラムの自動完了を参照して、my_scriptの次のパラメータの自動補完を実装したいと考えています。

$ my_script foo <tab> 
    # should output possible options to the foo subcommand 
    # like /usr/local/libexec/my_script/foo <tab> 

私はこの答えBash completion from another completionによって始めましたが、_commandまたは_command_offset 1が私のために動作するようには思えません。

  • どのように私はFOOのオプションを取得することができ、私はmy_scriptという中でこれを使用することができますか?

私の現在の/etc/bash_completion.d/my_scriptは、以下の

_my_script() 
{ 
    local cur prev opts 
    COMPREPLY=() 
    cur="${COMP_WORDS[COMP_CWORD]}" 
    prev="${COMP_WORDS[COMP_CWORD-1]}" 

    if [[ "$COMP_CWORD" == 1 ]]; then 
    # 1. param: for program to be loaded 
    for i in $(ls /usr/local/libexec/my_script/); do 
     opts="${opts} ${i} " 
    done 
    COMPREPLY=($(compgen -W "${opts}" ${cur})) 
    else 
    # next param: of the program to be loaded 

    # how do I get the options of "foo" here?   

    fi 

    return 0 
} 
complete -F _my_script my_script 

答えて

0

のように見えるとすぐに私はあなたの質問を読んで、sudogitの完了は、私の頭に浮かびました。彼らはどちらもあなたが望むのと同じような行動をしています。だから私は完成機能を探しました。ここにあなたの失われたラインは、次のとおりです。

local root_command=${COMP_WORDS[0]} 
_command_offset 1 

それは、Ubuntuの16.04で/usr/share/bash-completion/completions/sudoからコピーされています。私は全くその意味を知らない。しかし、それは動作します。

関連する問題