浏览代码

Merge remote-tracking branch 'robbyrussell/master'

yleo77 11 年之前
父节点
当前提交
fda5afaebc

+ 1 - 1
plugins/capistrano/_capistrano

@@ -4,7 +4,7 @@
 if [[ -f config/deploy.rb || -f Capfile ]]; then
   if [[ ! -f .cap_tasks~ || config/deploy.rb -nt .cap_tasks~ ]]; then
     echo "\nGenerating .cap_tasks~..." > /dev/stderr
-    cap --tasks | grep '#' | cut -d " " -f 2 > .cap_tasks~
+    cap -v --tasks | grep '#' | cut -d " " -f 2 > .cap_tasks~
   fi
   compadd `cat .cap_tasks~`
 fi

+ 19 - 0
plugins/docker/README.md

@@ -0,0 +1,19 @@
+## Docker autocomplete plugin
+
+- Adds autocomplete options for all docker commands.
+- Will also show containerIDs and Image names where applicable
+
+####Shows help for all commands
+![General Help](http://i.imgur.com/tUBO9jh.png "Help for all commands")
+
+
+####Shows your downloaded images where applicable
+![Images](http://i.imgur.com/R8ZsWO1.png "Images")
+
+
+####Shows your running containers where applicable
+![Containers](http://i.imgur.com/WQtbheg.png "Containers")
+
+
+
+Maintainer : Ahmed Azaan ([@aeonazaan](https://twitter.com/aeonazaan))

+ 290 - 0
plugins/docker/_docker

@@ -0,0 +1,290 @@
+#compdef docker
+
+# Docker autocompletion for oh-my-zsh
+# Requires: Docker installed
+# Author : Azaan (@aeonazaan)
+
+
+# ----- Helper functions
+# Output a selectable list of all running docker containers
+__docker_containers() {
+    declare -a cont_cmd
+    cont_cmd=($(docker ps | awk 'NR>1{print $1":[CON("$1")"$2"("$3")]"}'))
+    _describe 'containers' cont_cmd
+}
+
+# output a selectable list of all docker images
+__docker_images() {
+    declare -a img_cmd
+    img_cmd=($(docker images | awk 'NR>1{print $1}'))
+    _describe 'images' img_cmd
+}
+
+# ----- Commands
+# Seperate function for each command, makes extension easier later
+# ---------------------------
+__attach() {
+    __docker_containers
+}
+
+__build() {
+    _arguments \
+        '-q=false[Suppress verbose build output]' \
+        '-t="[fuck to be applied to the resulting image in case of success]' \
+        '*:files:_files'
+}
+
+__commit() {
+    _arguments \
+        '-author="[Author]' \
+        '-m="[Commit message]' \
+        '-run="[Config automatically applied when the image is run.\n]'
+    __docker_containers
+}
+
+__diff() {
+    __docker_containers
+}
+
+__export() {
+   __docker_containers
+}
+
+
+__history() {
+    __docker_images
+}
+
+__images() {
+    _arguments \
+        '-a[show all images]' \
+        '-notrunc[dont truncate output]' \
+        '-q[only show numeric IDs]' \
+        '-viz[output graph in graphviz format]'
+    __docker_images
+}
+
+__import() {
+    _arguments '*:files:_files'
+}
+
+__info() {
+    # no arguments
+}
+
+__insert() {
+    __docker_images
+    _arguments '*:files:_files'
+}
+
+__inspect() {
+    __docker_images
+    __docker_containers
+}
+
+__kill() {
+    __docker_containers
+}
+
+__login() {
+    _arguments \
+        '-e="[email]' \
+        '-p="[password]' \
+        '-u="[username]' \
+}
+
+__logs() {
+    __docker_containers
+}
+
+__port() {
+    __docker_containers
+}
+
+__top() {
+    __docker_containers
+}
+
+__ps() {
+    _arguments \
+        '-a[Show all containers. Only running containers are shown by default.]' \
+        '-beforeId="[Show only container created before Id, include non-running ones.]' \
+        '-l[Show only the latest created container, include non-running ones.]' \
+        '-n=[Show n last created containers, include non-running ones.]' \
+        '-notrurrrrnc[Dont truncate output]' \
+        '-q[Only display numeric IDs]' \
+        '-s[Display sizes]' \
+        '-sinceId="[Show only containers created since Id, include non-running ones.]'
+}
+
+__pull() {
+    _arguments '-t="[Download tagged image in repository]'
+}
+
+__push() {
+
+}
+
+__restart() {
+    _arguments '-t=[number of seconds to try to stop before killing]'
+    __docker_containers
+}
+
+__rm() {
+    _arguments '-v[Remove the volumes associated to the container]'
+    __docker_containers
+}
+
+__rmi() {
+    __docker_images
+}
+
+__run() {
+    _arguments \
+        '-a=[Attach to stdin, stdout or stderr.]' \
+        '-c=[CPU shares (relative weight)]' \
+        '-d[Detached mode: leave the container running in the background]' \
+        '-dns=[Set custom dns servers]' \
+        '-e=[Set environment variables]' \
+        '-entrypoint="[Overwrite the default entrypoint of the image]' \
+        '-h="[Container host name]' \
+        '-i[Keep stdin open even if not attached]' \
+        '-m=[Memory limit (in bytes)]' \
+        '-p=[Expose a containers port to the host (use docker port to see the actual mapping)]' \
+        '-t[Allocate a pseudo-tty]' \
+        '-u="[Username or UID]' \
+        '-v=[Bind mount a volume (e.g. from the host: -v /host:/container, from docker: -v /container)]' \
+        '-volumes-from="[Mount volumes from the specified container]'
+    __docker_images
+}
+
+__search() {
+    _arguments '-notrunc[Dont truncate output]'
+}
+
+__start() {
+    __docker_containers
+}
+
+__stop() {
+    _arguments '-t=[number of seconds to try to stop before killing]'
+    __docker_containers
+}
+
+__tag() {
+    _arguments '-f[Force]'
+    __docker_images
+}
+
+__version() {
+
+}
+
+__wait() {
+    __docker_containers
+}
+
+# end commands ---------
+# ----------------------
+
+local -a _1st_arguments
+_1st_arguments=(
+    "attach":"Attach to a running container"
+    "build":"Build a container from a Dockerfile"
+    "commit":"Create a new image from a container's changes"
+    "diff":"Inspect changes on a container's filesystem"
+    "export":"Stream the contents of a container as a tar archive"
+    "history":"Show the history of an image"
+    "images":"List images"
+    "import":"Create a new filesystem image from the contents of a tarball"
+    "info":"Display system-wide information"
+    "insert":"Insert a file in an image"
+    "inspect":"Return low-level information on a container"
+    "kill":"Kill a running container"
+    "login":"Register or Login to the docker registry server"
+    "logs":"Fetch the logs of a container"
+    "port":"Lookup the public-facing port which is NAT-ed to PRIVATE_PORT"
+    "top":"Lookup the running processes of a container"
+    "ps":"List containers"
+    "pull":"Pull an image or a repository from the docker registry server"
+    "push":"Push an image or a repository to the docker registry server"
+    "restart":"Restart a running container"
+    "rm":"Remove one or more containers"
+    "rmi":"Remove one or more images"
+    "run":"Run a command in a new container"
+    "search":"Search for an image in the docker index"
+    "start":"Start a stopped container"
+    "stop":"Stop a running container"
+    "tag":"Tag an image into a repository"
+    "version":"Show the docker version information"
+    "wait":"Block until a container stops, then print its exit code"
+)
+
+_arguments '*:: :->command'
+
+if (( CURRENT == 1 )); then
+    _describe -t commands "docker command" _1st_arguments
+    return
+fi
+
+local -a _command_args
+case "$words[1]" in
+    attach)
+       __docker_containers ;;
+    build)
+        __build ;;
+    commit)
+        __commit ;;
+    diff)
+        __diff ;;
+    export)
+        __export ;;
+    history)
+        __history ;;
+    images)
+        __images ;;
+    import)
+        __import ;;
+    info)
+        __info ;;
+    insert)
+        __insert ;;
+    inspect)
+        __inspect ;;
+    kill)
+        __kill ;;
+    login)
+        __login ;;
+    logs)
+        __logs ;;
+    port)
+        __port ;;
+    top)
+        __top ;;
+    ps)
+        __ps ;;
+    pull)
+        __pull ;;
+    push)
+        __push ;;
+    restart)
+        __restart ;;
+    rm)
+        __rm ;;
+    rmi)
+        __rmi ;;
+    run)
+        __run ;;
+    search)
+        __search ;;
+    start)
+        __start ;;
+    stop)
+        __stop ;;
+    tag)
+        __tag ;;
+    version)
+        __version ;;
+    wait)
+        __wait ;;
+esac

+ 5 - 3
plugins/gem/_gem

@@ -9,8 +9,9 @@ _gem_installed() {
 
 local -a _1st_arguments
 _1st_arguments=(
+  'build:Build a gem from a gemspec'
   'cert:Manage RubyGems certificates and signing settings'
-  'check:Check installed gems'
+  'check:Check a gem repository for added or missing files'
   'cleanup:Clean up old versions of installed gems in the local repository'
   'contents:Display the contents of the installed gems'
   'dependency:Show the dependencies of an installed gem'
@@ -21,7 +22,7 @@ _1st_arguments=(
   'install:Install a gem into the local repository'
   'list:Display gems whose name starts with STRING'
   'lock:Generate a lockdown list of gems'
-  'mirror:Mirror a gem repository'
+  'mirror:Mirror all gem files (requires rubygems-mirror)'
   'outdated:Display all gems that need updates'
   'owner:Manage gem owners on RubyGems.org.'
   'pristine:Restores installed gems to pristine condition from files located in the gem cache'
@@ -35,8 +36,9 @@ _1st_arguments=(
   'stale:List gems along with access times'
   'uninstall:Uninstall gems from the local repository'
   'unpack:Unpack an installed gem to the current directory'
-  'update:Update the named gems (or all installed gems) in the local repository'
+  'update:Update installed gems to the latest version'
   'which:Find the location of a library file you can require'
+  'yank:Remove a specific gem version release from RubyGems.org'
 )
 
 local expl

+ 21 - 0
plugins/git/_git-branch

@@ -60,3 +60,24 @@ _git-branch ()
     "($l $c $m -d)-D[delete a branch]" \
     $dependent_deletion_args
 }
+
+(( $+functions[__git_ignore_line] )) ||
+__git_ignore_line () {
+  declare -a ignored
+  ignored=()
+  ((CURRENT > 1)) &&
+    ignored+=(${line[1,CURRENT-1]//(#m)[\[\]()\\*?#<>~\^]/\\$MATCH})
+  ((CURRENT < $#line)) &&
+    ignored+=(${line[CURRENT+1,-1]//(#m)[\[\]()\\*?#<>~\^]/\\$MATCH})
+  $* -F ignored
+}
+
+(( $+functions[__git_ignore_line_inside_arguments] )) ||
+__git_ignore_line_inside_arguments () {
+  declare -a compadd_opts
+
+  zparseopts -D -E -a compadd_opts V: J: 1 2 n f X: M: P: S: r: R: q F:
+
+  __git_ignore_line $* $compadd_opts
+}
+

+ 2 - 0
plugins/git/git.plugin.zsh

@@ -22,6 +22,8 @@ alias gca='git commit -v -a'
 compdef _git gc=git-commit
 alias gca!='git commit -v -a --amend'
 compdef _git gca!=git-commit
+alias gcmsg='git commit -m'
+compdef _git gcmsg=git-commit
 alias gco='git checkout'
 compdef _git gco=git-checkout
 alias gcm='git checkout master'

+ 18 - 0
plugins/knife_ssh/knife_ssh.plugin.zsh

@@ -0,0 +1,18 @@
+function knife_ssh() {
+  grep -q $1 ~/.knife_comp~ 2> /dev/null || rm -f ~/.knife_comp~;
+  ssh $(knife node show $1 | awk '/IP:/{print $2}')
+}
+
+_knife_ssh() {
+  if hash knife 2>/dev/null; then
+    if [[ ! -f ~/.knife_comp~ ]]; then
+      echo "\nGenerating ~/.knife_comp~..." >/dev/stderr
+      knife node list > ~/.knife_comp~
+    fi
+    compadd $(<~/.knife_comp~)
+  else
+    echo "Could not find knife" > /dev/stderr;
+  fi
+}
+
+compdef _knife_ssh knife_ssh

+ 63 - 0
plugins/mix/_mix

@@ -0,0 +1,63 @@
+#compdef mix 
+#autoload
+
+# Elixir mix zsh completion
+
+local -a _1st_arguments
+_1st_arguments=(
+    'archive:Archive this project into a .ez file'
+    'clean:Clean generated application files'
+    'compile:Compile source files'
+    'deps:List dependencies and their status'
+    "deps.clean:Remove dependencies' files"
+    'deps.compile:Compile dependencies'
+    'deps.get:Get all out of date dependencies'
+    'deps.unlock:Unlock the given dependencies'
+    'deps.update:Update dependencies'
+    'do:Executes the commands separated by comma'
+    'escriptize:Generates an escript for the project'
+    'help:Print help information for tasks'
+    'local:List local tasks'
+    'local.install:Install a task or an archive locally'
+    'local.rebar:Install rebar locally'
+    'local.uninstall:Uninstall local tasks or archives'
+    'new:Creates a new Elixir project'
+    'run:Run the given file or expression'
+    "test:Run a project's tests"
+    '--help:Describe available tasks'
+    '--version:Prints the Elixir version information'
+)
+
+__task_list ()
+{
+    local expl
+    declare -a tasks
+
+    tasks=(archive clean compile deps deps.clean deps.compile deps.get deps.unlock deps.update do escriptize help local local.install local.rebar local.uninstall new run test)
+
+    _wanted tasks expl 'help' compadd $tasks
+}
+
+local expl
+
+local curcontext="$curcontext" state line
+typeset -A opt_args
+
+_arguments -C \
+    ':command:->command' \
+    '*::options:->options'
+
+case $state in
+  (command)
+      _describe -t commands "mix subcommand" _1st_arguments
+      return
+  ;;
+
+  (options)
+    case $line[1] in
+      (help)
+         _arguments ':feature:__task_list' 
+    esac
+  ;;
+esac
+

+ 381 - 0
plugins/pod/_pod

@@ -0,0 +1,381 @@
+#compdef pod
+#autoload
+
+# -----------------------------------------------------------------------------
+#          FILE:  _pod
+#   DESCRIPTION:  Cocoapods autocomplete plugin for Oh-My-Zsh
+#                 http://cocoapods.org
+#        AUTHOR:  Alexandre Joly (alexandre.joly@mekanics.ch)
+#        GITHUB:  https://github.com/mekanics
+#       TWITTER:  @jolyAlexandre
+#       VERSION:  0.0.1
+#       LICENSE:  MIT
+# -----------------------------------------------------------------------------
+
+local -a _1st_arguments
+_1st_arguments=(
+    'help:Show help for the given command.'
+    'install:Install project dependencies'
+    'ipc:Inter-process communication'
+    'list:List pods'
+    'outdated:Show outdated project dependencies'
+    'podfile-info:Shows information on installed Pods'
+    'push:Push new specifications to a spec-repo'
+    'repo:Manage spec-repositories'
+    'search:Searches for pods'
+    'setup:Setup the CocoaPods environment'
+    'spec:Manage pod specs'
+    'update:Update outdated project dependencies'
+)
+
+local -a _repo_arguments
+_repo_arguments=(
+    'add:Add a spec repo'
+    'lint:Validates all specs in a repo'
+    'update:Update a spec repo'
+)
+
+local -a _spec_arguments
+_spec_arguments=(
+    'cat:Prints a spec file'
+    'create:Create spec file stub'
+    'edit:Edit a spec file'
+    'lint:Validates a spec file'
+    'which:Prints the path of the given spec'
+)
+
+local -a _ipc_arguments
+_ipc_arguments=(
+    'list:Lists the specifications know to CocoaPods'
+    'podfile:Converts a Podfile to YAML'
+    'repl:The repl listens to commands on standard input'
+    'spec:Converts a podspec to YAML'
+    'update-search-index:Updates the search index'
+)
+
+local -a _list_arguments
+_list_arguments=(
+    'new:Lists pods introduced in the master spec-repo since the last check'
+)
+
+local -a _inherited_options
+_inherited_options=(
+    '(--silent)--silent[Show nothing]' \
+    '(--version)--version[Show the version of CocoaPods]' \
+    '(--no-color)--no-color[Show output without color]' \
+    '(--verbose)--verbose[Show more debugging information]' \
+    '(--help)--help[Show help banner of specified command]'
+)
+
+local -a _install_options
+_install_options=(
+    '(--no-clean)--no-clean[Leave SCM dirs like `.git` and `.svn` intact after downloading]' \
+    '(--no-integrate)--no-integrate[Skip integration of the Pods libraries in the Xcode project(s)]' \
+    '(--no-repo-update)--no-repo-update[Skip running `pod repo update` before install]'
+)
+
+local -a _update_options
+_update_options=(
+    '(--no-clean)--no-clean[Leave SCM dirs like `.git` and `.svn intact after downloading]' \
+    '(--no-integrate)--no-integrate[Skip integration of the Pods libraries in the Xcode project(s)]' \
+    '(--no-repo-update)--no-repo-update[Skip running `pod repo update before install]'
+)
+
+local -a _outdated_options
+_outdated_options=(
+    '(--no-repo-update)--no-repo-update[Skip running `pod repo update` before install]'
+)
+
+local -a _search_options
+_search_options=(
+    '(--full)--full[Search by name, summary, and description]' \
+    '(--stats)--stats[Show additional stats (like GitHub watchers and forks)]' \
+    '(--ios)--ios[Restricts the search to Pods supported on iOS]' \
+    '(--osx)--osx[Restricts the search to Pods supported on OS X]'
+)
+
+local -a _list_options
+_list_options=(
+    '(--update)--update[Run `pod repo update` before listing]'
+)
+
+local -a _podfile_info_options
+_podfile_info_options=(
+    '(--all)--all[Show information about all Pods with dependencies that are used in a project]' \
+    '(--md)--md[Output information in Markdown format]' \
+    '*:script or directory:_files'
+)
+
+local -a _push_options
+_push_options=(
+    '(--allow-warnings)--allow-warnings[Allows pushing even if there are warnings]' \
+    '(--local-only)--local-only[Does not perform the step of pushing REPO to its remote]' \
+    '*:script or directory:_files'
+)
+
+local -a _repo_lint_options
+_repo_lint_options=(
+    '(--only-errors)--only-errors[Lint presents only the errors]'
+)
+
+local -a _setup_options
+_setup_options=(
+    '(--push)--push[Use this option to enable push access once granted]'
+)
+
+local -a _spec_lint_options
+_spec_lint_options=(
+    '(--quick)--quick[Lint skips checks that would require to download and build the spec]' \
+    '(--only-errors)--only-errors[Lint validates even if warnings are present]' \
+    '(--no-clean)--no-clean[Lint leaves the build directory intact for inspection]' \
+    '*:script or directory:_files'
+)
+
+local -a _spec_cat_options
+_spec_cat_options=(
+    '(--show-all)--show-all[Pick from all versions of the given podspec]'
+)
+
+local -a _spec_which_options
+_spec_which_options=(
+    '(--show-all)--show-all[Print all versions of the given podspec]'
+)
+
+local -a _spec_edit_options
+_spec_edit_options=(
+    '(--show-all)--show-all[Pick which spec to edit from all available versions of the given podspec]'
+)
+
+
+__first_command_list ()
+{
+    local expl
+    declare -a tasks
+
+    tasks=(install ipc list outdated podfile-info push repo search setup spec update)
+
+    _wanted tasks expl 'help' compadd $tasks
+}
+
+__repo_list() {
+    _wanted application expl 'repo' compadd $(command ls -1 ~/.cocoapods 2>/dev/null | sed -e 's/ /\\ /g')
+}
+
+__pod-repo() {
+    local curcontext="$curcontext" state line
+    typeset -A opt_args
+
+    _arguments -C \
+        ':command:->command' \
+        '*::options:->options'
+
+    case $state in
+        (command)
+            _describe -t commands "pod repo" _repo_arguments
+            return
+        ;;
+
+        (options)
+            case $line[1] in
+                (lint)
+                    _arguments \
+                        $_inherited_options \
+                        $_repo_lint_options \
+                        ':feature:__repo_list'
+                ;;
+
+                (update)
+                    _arguments \
+                        $_inherited_options \
+                        ':feature:__repo_list'
+                ;;
+
+                (add)
+                    _arguments \
+                        $_inherited_options
+            esac
+        ;;
+    esac
+}
+
+__pod-spec() {
+    local curcontext="$curcontext" state line
+    typeset -A opt_args
+
+    _arguments -C \
+        ':command:->command' \
+        '*::options:->options'
+
+   case $state in
+        (command)
+            _describe -t commands "pod spec" _spec_arguments
+            return
+        ;;
+
+        (options)
+            case $line[1] in
+                (create)
+                    _arguments \
+                        $_inherited_options
+                ;;
+
+                (lint)
+                    _arguments \
+                        $_inherited_options \
+                        $_spec_lint_options
+                ;;
+
+                (cat)
+                    _arguments \
+                        $_inherited_options \
+                        $_spec_cat_options
+                ;;
+
+                (which)
+                    _arguments \
+                        $_inherited_options \
+                        $_spec_which_options
+                ;;
+
+                (edit)
+                    _arguments \
+                        $_inherited_options \
+                        $_spec_edit_options
+                ;;
+            esac
+            return
+        ;;
+    esac
+}
+
+__pod-ipc() {
+    local curcontext="$curcontext" state line
+    typeset -A opt_args
+
+    _arguments -C \
+        ':command:->command' \
+        '*::options:->options'
+
+   case $state in
+        (command)
+            _describe -t commands "pod ipc" _ipc_arguments
+            return
+        ;;
+
+        (options)
+            _arguments -C \
+                $_inherited_options
+            return
+        ;;
+    esac
+}
+
+__pod-list() {
+    local curcontext="$curcontext" state line
+    typeset -A opt_args
+
+    _arguments -C \
+        $_inherited_options \
+        $_list_options \
+        ':command:->command' \
+        '*::options:->options'
+
+   case $state in
+        (command)
+            _describe -t commands "pod list" _list_arguments
+            return
+        ;;
+
+        (options)
+            _arguments -C \
+                $_inherited_options \
+                $_list_options
+            return
+        ;;
+    esac
+}
+
+local curcontext="$curcontext" state line
+typeset -A opt_args
+
+_arguments -C \
+    $_inherited_options \
+    ':command:->command' \
+    '*::options:->options'
+
+case $state in
+  (command)
+      _describe -t commands "pod" _1st_arguments
+      return
+  ;;
+
+  (options)
+    case $line[1] in
+        (help)
+            _arguments \
+                $_inherited_options \
+                ':help:__first_command_list'
+        ;;
+
+        (push)
+            _arguments \
+                $_inherited_options \
+                $_push_options \
+                ':repo:__repo_list'
+        ;;
+
+        (repo)
+            __pod-repo
+        ;;
+
+        (spec)
+            __pod-spec
+        ;;
+
+        (ipc)
+            __pod-ipc
+        ;;
+
+        (list)
+            __pod-list
+        ;;
+
+        (install)
+            _arguments \
+                $_inherited_options \
+                $_install_options
+        ;;
+
+        (update)
+            _arguments \
+                $_inherited_options \
+                $_update_options
+        ;;
+
+        (outdated)
+            _arguments \
+                $_inherited_options \
+                $_outdated_options
+        ;;
+
+        (search)
+            _arguments \
+                $_inherited_options \
+                $_search_options
+        ;;
+
+        (podfile-info)
+            _arguments \
+                $_inherited_options \
+                $_podfile_info_options
+        ;;
+
+        (setup)
+            _arguments \
+                $_inherited_options \
+                $_setup_options
+        ;;
+
+    esac
+  ;;
+esac

+ 5 - 1
plugins/rails3/rails3.plugin.zsh

@@ -4,7 +4,11 @@ function _rails_command () {
   if [ -e "script/server" ]; then
     ruby script/$@
   else
-    ruby script/rails $@
+    if [ -e "bin/rails" ]; then
+      bin/rails $@
+    else
+      rails $@
+    fi
   fi
 }
 

+ 1 - 1
plugins/ssh-agent/ssh-agent.plugin.zsh

@@ -9,7 +9,7 @@
 #   To load multiple identities use the identities style, For
 #   example:
 #
-#     zstyle :omz:plugins:ssh-agent id_rsa id_rsa2 id_github
+#     zstyle :omz:plugins:ssh-agent identities id_rsa id_rsa2 id_github
 #
 #   To set the maximum lifetime of the identities, use the
 #   lifetime style. The lifetime may be specified in seconds

+ 1 - 1
plugins/symfony/symfony.plugin.zsh

@@ -1,7 +1,7 @@
 # symfony basic command completion
 
 _symfony_get_command_list () {
-    ./symfony | sed "1,/Available tasks/d" | awk 'BEGIN { cat=null; } /^[A-Za-z]+$/ { cat = $1; } /^  :[a-z]+/ { print cat $1; }'
+    php symfony | sed "1,/Available tasks/d" | awk 'BEGIN { cat=null; } /^[A-Za-z]+$/ { cat = $1; } /^  :[a-z]+/ { print cat $1; }'
 }
 
 _symfony () {