summaryrefslogtreecommitdiff
path: root/plugins/composer
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/composer')
-rw-r--r--plugins/composer/README.md32
-rw-r--r--plugins/composer/composer.plugin.zsh42
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