diff options
Diffstat (limited to 'plugins/composer')
-rw-r--r-- | plugins/composer/README.md | 32 | ||||
-rw-r--r-- | plugins/composer/composer.plugin.zsh | 42 |
2 files changed, 43 insertions, 31 deletions
diff --git a/plugins/composer/README.md b/plugins/composer/README.md index 2b4bae579..7a5f7256e 100644 --- a/plugins/composer/README.md +++ b/plugins/composer/README.md @@ -12,18 +12,20 @@ plugins=(... composer) ## Aliases -| Alias | Command | Description | -| ------ | -------------------------------------------- | -------------------------------------------------------------------------------------- | -| `c` | composer | Starts composer | -| `csu` | composer self-update | Updates composer to the latest version | -| `cu` | composer update | Updates composer dependencies and `composer.lock` file | -| `cr` | composer require | Adds new packages to `composer.json` | -| `crm` | composer remove | Removes packages from `composer.json` | -| `ci` | composer install | Resolves and installs dependencies from `composer.json` | -| `ccp` | composer create-project | Create new project from an existing package | -| `cdu` | composer dump-autoload | Updates the autoloader | -| `cdo` | composer dump-autoload --optimize-autoloader | Converts PSR-0/4 autoloading to classmap for a faster autoloader (good for production) | -| `cgu` | composer global update | Allows update command to run on COMPOSER_HOME directory | -| `cgr` | composer global require | Allows require command to run on COMPOSER_HOME directory | -| `cgrm` | composer global remove | Allows remove command to run on COMPOSER_HOME directory | -| `cget` | `curl -s https://getcomposer.org/installer` | Installs composer in the current directory | +| Alias | Command | Description | +| ------ | ------------------------------------------- | --------------------------------------------------------------------------------------- | +| `c` | `composer` | Starts composer | +| `csu` | `composer self-update` | Updates composer to the latest version | +| `cu` | `composer update` | Updates composer dependencies and `composer.lock` file | +| `cr` | `composer require` | Adds new packages to `composer.json` | +| `crm` | `composer remove` | Removes packages from `composer.json` | +| `ci` | `composer install` | Resolves and installs dependencies from `composer.json` | +| `ccp` | `composer create-project` | Create new project from an existing package | +| `cdu` | `composer dump-autoload` | Updates the autoloader | +| `cdo` | `composer dump-autoload -o` | Converts PSR-0/4 autoloading to classmap for a faster autoloader (good for production) | +| `cgu` | `composer global update` | Allows update command to run on COMPOSER_HOME directory | +| `cgr` | `composer global require` | Allows require command to run on COMPOSER_HOME directory | +| `cgrm` | `composer global remove` | Allows remove command to run on COMPOSER_HOME directory | +| `cget` | `curl -s https://getcomposer.org/installer` | Installs composer in the current directory | +| `co` | `composer outdated` | Shows a list of installed packages with available updates | +| `cod` | `composer outdated --direct` | Shows a list of installed packages with available updates which are direct dependencies | diff --git a/plugins/composer/composer.plugin.zsh b/plugins/composer/composer.plugin.zsh index 634961023..218a13e5f 100644 --- a/plugins/composer/composer.plugin.zsh +++ b/plugins/composer/composer.plugin.zsh @@ -15,20 +15,16 @@ _composer_get_required_list () { } _composer () { - local curcontext="$curcontext" state line - typeset -A opt_args - _arguments \ - '1: :->command'\ - '*: :->args' - - case $state in - command) - compadd $(_composer_get_command_list) - ;; - *) - compadd $(_composer_get_required_list) - ;; - esac + local curcontext="$curcontext" state line + typeset -A opt_args + _arguments \ + '*:: :->subcmds' + + if (( CURRENT == 1 )) || ( ((CURRENT == 2)) && [ "$words[1]" = "global" ] ) ; then + compadd $(_composer_get_command_list) + else + compadd $(_composer_get_required_list) + fi } compdef _composer composer @@ -43,17 +39,31 @@ alias crm='composer remove' alias ci='composer install' alias ccp='composer create-project' alias cdu='composer dump-autoload' -alias cdo='composer dump-autoload --optimize-autoloader' +alias cdo='composer dump-autoload -o' alias cgu='composer global update' alias cgr='composer global require' alias cgrm='composer global remove' +alias co='composer outdated' +alias cod='composer outdated --direct' # install composer in the current directory alias cget='curl -s https://getcomposer.org/installer | php' # Add Composer's global binaries to PATH, using Composer if available. if (( $+commands[composer] )); then - export PATH=$PATH:$(composer global config bin-dir --absolute 2>/dev/null) + 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 else [ -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 |