stMind

about Tech, Computer vision and Machine learning

githubでbash completionを管理する

bash派です。

bash completionを利用してコマンド補完を独自に拡張していけるということで、拡張ファイルをgithubで管理するようにしてみました。

bash-completionのインストール

まずは、bash-completion本体をインストールしておきます。Macであれば、

$ brew install bash-completion

でOK。インストールしたら、.bashrcに以下を追加。

if [ -f `brew --prefix`/etc/bash_completion ]; then
    source `brew --prefix`/etc/bash_completion
fi

追加したら設定を有効にしておく。

$ source ~/.bashrc

これで、/usr/local/etc/bash_completion.dにあるコマンドの補完が出来るようになっています。また、このディレクトリに補完したいコマンドのファイルを用意することで、独自拡張を追加していくことができます。


独自拡張をgithubで管理

Chromeのextension作成ツールのcrxmakeを最近使っているので、まずはそのcompletionを作ってみました。中身はこんな感じ。

_crxmake()
{
	local cur prev opts
	COMPREPLY=()
	cur="${COMP_WORDS[COMP_CWORD]}"
	prev="${COMP_WORDS[COMP_CWORD-1]}"
	opts="--extension-output --help --ignore-dir --ignore-file --key-output --mode --pack-extension --pack-extension-key --verbose --zip-output"

	if [[ ${cur} == -* ]] ; then
		COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
		return 0
	fi
}
complete -F _crxmake crxmake

ホーム直下とか適当な場所に管理用のディレクトリを作り、そこに実体を置いて、/usr/local/etc/bash_completion.dにはシンボリックリンクを作成します。

$ cd ~
$ mkdir bash_completion.d
$ cd bash_completion.d
$ touch crxmake
$ vi crxmake
...
$ ln -s "$HOME/bash_completion.d/crxmake" /usr/local/etc/bash_completion.d/crxmake

後は、gitの一連の手順を実行するだけです。hubをインストールして、alias git=hubしていればgit createでgithub上にレポジトリ作ってremote addしてくれるので楽ちん。

$ git init
$ git add crxmake
$ git commit -m 'crxmake bash completion added'
$ git create -d 'bash completion files'
$ git push -u origin master

まとめ

  1. ~/bash_completion.dにコマンド名の補完ファイルを作る
  2. /usr/local/etc/bash_completion.dにシンボリックリンクを作る
  3. git add, git commit, git push

で独自拡張をどんどん追加、githubで管理していくことが出来ます。