0

Symfony のコンソール用の ZSH オートコンプリート スクリプトを作成しようとしています。ほぼ完成しましたが、最後の部分でブロックしています。関数 return のおかげで配列を作成する必要がありますが、処理方法がわかりません。私が書いたコードは次のとおりです。

_find_console () {
    echo "php $(find . -maxdepth 2 -mindepth 1 -name 'console' -type f | head -n 1)"
}

_console_get_command_list () {
    `_find_console` --no-ansi | \
        sed "1,/Available commands/d" | \
        awk '/ [a-z]+/ { print $0 }' | \
        sed -E 's/^[ ]+//g' | \
        sed -E 's/[:]+/\\:/g' | \
        sed -E 's/[ ]{2,}/\:/g'
}

_console () {
    local -a commands
    commands=(`_console_get_command_list`)
    _describe 'commands' commands
}

compdef _console php console
compdef _console console

コマンドラインを実行すると、適切な方法でフォーマットされます。ただし、ZSH で使用すると、出力は次のようになります。

acme:hello         -- Hello
assets:install     -- Installs
cache:warmup       -- Warms

フォーマットされた関数は次を返します。

acme\:hello:Hello World example command
assetic\:dump:Dumps all assets to the filesystem
cache\:warmup:Warms up an empty cache

表示されない単語は、コマンド補完として使用されます。ここに例があります: Asciinema example .

戻り値を配列に直接使用すると、うまく機能します。

4

0 に答える 0