symfonyコマンドを補完する
1月 8th, 2009
1.2がでる世の中ですが、1.0です。
bashでsymfony1.0コマンドを補完する方法。
via Symfony Bash auto-completion
symfonyディレクトリで「./symfony」として利用するのでその部分も追加します。
「~/.bash-completion」として以下を保存。
_symfony()
{
local cur prev action
COMREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
action=${COMP_WORDS[1]}
case "$prev" in
init-module|propel-generate-crud|propel-init-crud|propel-init-admin|propel-load-data|propel-build-all-load)
COMPREPLY=( $( compgen -W "$( ls --color=n -1 apps 2>/dev/null| sed -e 's/ /\\ /g' )" -- $cur ))
return 0
;;
init-project)
COMPREPLY=( $( compgen -W "$( basename $PWD )" -- $cur ))
return 0
;;
init-app)
COMPREPLY=( $( compgen -W "frontend backend" -- $cur))
return 0
;;
symfony)
COMPREPLY=( $( compgen -W "$( symfony -T | awk '/^ /' | cut -d' ' -f3 )" -- $cur ) )
return 0
;;
./symfony)
COMPREPLY=( $( compgen -W "$( ./symfony -T | awk '/^ /' | cut -d' ' -f3 )" -- $cur ) )
return 0
;;
plugin-install)
COMPREPLY=( $( compgen -W 'local global' -- $cur ) )
return 0
;;
global|local)
COMPREPLY=( $( compgen -W 'symfony/' ) )
return 0
;;
*)
case "$action" in
propel-generate-crud|propel-init-crud|propel-init-admin)
if (($COMP_CWORD == 3)); then
COMPREPLY=( $( compgen -W "$( find lib/model -maxdepth 1 -name '*.php' -exec basename {} .php \; |grep -v Peer\$| tr [:upper:] [:lower:] )" -- $cur ) )
elif (($COMP_CWORD == 4)); then
COMPREPLY=( $( compgen -W "$( find lib/model -maxdepth 1 -name '*.php' -exec basename {} .php \; |grep -v Peer\$ )" -- $cur ) )
fi
return 0
;;
esac
return 0
;;
sync)
if (($COMP_CWORD == 3)); then
COMPREPLY=( $( compgen -W 'go' -- $cur))
fi
return 0
;;
esac
return 0
}
complete -F _symfony symfony
「~/.bashrc」に以下を追記。
[ -f ~/.bash-completion ] && source ~/.bash-completion
反映。
source ~/.bashrc
こんな感じになりました。
$ ./symfony app init-project propel-build-sql batch log-purge propel-convert-xml-schema cc log-rotate propel-convert-yml-schema clear-cache module propel-dump-data clear-controllers new propel-generate-crud controller plugin-install propel-init-admin disable plugin-list propel-init-crud downgrade plugin-uninstall propel-insert-sql enable plugin-upgrade propel-load-data fix-perms promote-super-admin sync freeze propel-build-all test-all init-app propel-build-all-load test-functional init-batch propel-build-db test-unit init-controller propel-build-model unfreeze init-module propel-build-schema upgrade
zshはこちらに書いてあるようです。
zsh Completion file