ホーム > 日記 > symfonyコマンドを補完する

symfonyコマンドを補完する

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

カテゴリー: 日記 タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。