Hatena::Groupandroid

lnzntの Android 日記 このページをアンテナに追加 RSSフィード

2012年04月17日(火)

bash-completion で AVD 名補完

00:58 | bash-completion で AVD 名補完 - lnzntの Android 日記 を含むブックマーク はてなブックマーク - bash-completion で AVD 名補完 - lnzntの Android 日記 bash-completion で AVD 名補完 - lnzntの Android 日記 のブックマークコメント

私は emulator コマンドに以下のエイリアスを切っています。

alias avd='emulator -avd'
alias e=avd

以下のような AVD 名の補完機能が欲しくなりました。

$ avd my_[TAB]    # ここで my_avd と補完してほしい。。。

そこで、bash-completion を使った設定を書きました。

(.bashrc に source コマンドで読み込ませるファイル)

alias avd='emulator -avd'
alias e=avd
complete -o default -F _avd avd
complete -o default -F _avd e

_emulator_names() {
    local d

    for d in ${ANDROID_SDK_HOME:-~}/.android/avd/*.avd
    do
        [ -d "$d" ] && echo $( basename "$d" .avd )
    done
}

_avd() {
    case $COMP_CWORD in
        1)  local word=${COMP_WORDS[$COMP_CWORD]}
            local list=$( _emulator_names )
            COMPREPLY=( $( compgen -W "$list" "$word" ) ) ;;

        *)  COMPREPLY=() ;;
    esac
}

これで望みの補完がされるようになりました。

----

他のオプションの対応とか改善の余地は多いです。(。。。が、当面これで満足)