## Basic Composer command completion # Since Zsh 5.7, an improved composer command completion is provided if ! is-at-least 5.7; then _composer () { local curcontext="$curcontext" state line typeset -A opt_args _arguments '*:: :->subcmds' if (( CURRENT == 1 )) || ( (( CURRENT == 2 )) && [[ "$words[1]" = "global" ]] ); then # Command list local -a subcmds subcmds=("${(@f)"$($_comp_command1 --no-ansi 2>/dev/null | awk ' /Available commands/{ r=1 } r == 1 && /^[ \t]*[a-z]+/{ gsub(/^[ \t]+/, "") gsub(/ +/, ":") print $0 } ')"}") _describe -t commands 'composer command' subcmds else # Required list compadd $($_comp_command1 show -s --no-ansi 2>/dev/null \ | sed '1,/requires/d' \ | awk 'NF > 0 && !/^requires \(dev\)/{ print $1 }') fi } compdef _composer composer compdef _composer composer.phar fi ## Aliases alias c='composer' alias ccp='composer create-project' alias cdo='composer dump-autoload -o' alias cdu='composer dump-autoload' alias cget='curl -s https://getcomposer.org/installer | php' alias cgr='composer global require' alias cgrm='composer global remove' alias cgu='composer global update' alias ci='composer install' alias co='composer outdated' alias cod='composer outdated --direct' alias cr='composer require' alias crm='composer remove' alias cs='composer show' alias csu='composer self-update' alias cu='composer update' alias cuh='composer update --working-dir=$(composer config -g home)' ## If Composer not found, try to add known directories to $PATH if (( ! $+commands[composer] )); then [[ -d "$HOME/.composer/vendor/bin" ]] && export PATH="$PATH:$HOME/.composer/vendor/bin" [[ -d "$HOME/.config/composer/vendor/bin" ]] && export PATH="$PATH:$HOME/.config/composer/vendor/bin" # If still not found, don't do the rest of the script (( $+commands[composer] )) || return 0 fi ## Add Composer's global binaries to PATH autoload -Uz _store_cache _retrieve_cache _cache_invalid _retrieve_cache composer if [[ -z $__composer_bin_dir ]]; then __composer_bin_dir=$(composer global config bin-dir --absolute 2>/dev/null) _store_cache composer __composer_bin_dir fi # Add Composer's global binaries to PATH export PATH="$PATH:$__composer_bin_dir" unset __composer_bin_dir