ethnaコマンドのzsh補完関数つづき

後半で3点も入れられちゃってるよオイ、という空気を感じつつこのあいだの続きでもしよ、って思って続きです。

もういいや的あきらめって必要なときは必要ですよね。

#compdef ethna

_ethna() {
    local curcontext="$curcontext" state line expl ret=1

    _arguments -C \
        '(-v --version)'{-v,--version}'[show version]' \
        '1:ethna command:->ethna-cmd' \
        '*:ethna command args:->ethna-cmd-arg' \
        && ret=0

    if [[ -n "$state" ]]; then
        case $state in
            ethna-cmd)
                handles=( $($service | grep '^ \+.* -> .*:$' | awk '{print $1}') )
                _wanted ethna-cmd expl 'ethna cmd' compadd -a handles && ret=0
            ;;
            ethna-cmd-arg)
                usage=$($service | grep -A 1 "^ \+$words[2] ->")
                if [[ -n "$usage" ]]; then
                    _wanted ethna-cmd-arg expl 'ethna cmd arg' compadd -x "$usage" && ret=0
                else
                    _wanted ethna-cmd-arg expl 'ethna cmd arg' compadd -x "unknown command" && ret=0
                fi
            ;;
        esac
    fi

    return ret
}

はい、sedはきえましたがgrepawkが埋まってます。

ようするにethnaコマンドの出力を取るように変更しました。

どうせzshでtabで補完するなんて、「それなりに性能のいいマシンで」「インタラクティブに」呼び出される関数書くだけなんですから。いいんです、これで。solarisで動かないとかあっても一切知りません。