diff options
Diffstat (limited to 'plugins/composer')
| -rw-r--r-- | plugins/composer/README.md | 38 | ||||
| -rw-r--r-- | plugins/composer/composer.plugin.zsh | 104 | 
2 files changed, 76 insertions, 66 deletions
diff --git a/plugins/composer/README.md b/plugins/composer/README.md index 7a5f7256e..ad6ed24bc 100644 --- a/plugins/composer/README.md +++ b/plugins/composer/README.md @@ -10,22 +10,26 @@ To use it add `composer` to the plugins array in your zshrc file.  plugins=(... composer)  ``` +Original author: Daniel Gomes <me@danielcsgomes.com> +  ## 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 -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 | +| Alias  | Command                            | Description                                                                             | +| ------ | ---------------------------------- | --------------------------------------------------------------------------------------- | +| `c`    | `composer`                         | Starts composer                                                                         | +| `ccp`  | `composer create-project`          | Create new project from an existing package                                             | +| `cdo`  | `composer dump-autoload -o`        | Converts PSR-0/4 autoloading to classmap for a faster autoloader (good for production)  | +| `cdu`  | `composer dump-autoload`           | Updates the autoloader                                                                  | +| `cget` | `curl -s <installer> \| php`       | Installs composer in the current 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                                 | +| `cgu`  | `composer global update`           | Allows update command to run on COMPOSER_HOME directory                                 | +| `ci`   | `composer install`                 | Resolves and installs dependencies from `composer.json`                                 | +| `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 | +| `cr`   | `composer require`                 | Adds new packages to `composer.json`                                                    | +| `crm`  | `composer remove`                  | Removes packages from `composer.json`                                                   | +| `cs`   | `composer show`                    | Lists available packages, with optional filtering                                       | +| `csu`  | `composer self-update`             | Updates composer to the latest version                                                  | +| `cu`   | `composer update`                  | Updates composer dependencies and `composer.lock` file                                  | +| `cuh`  | `composer update -d <config-home>` | Updates globally installed packages                                                     | diff --git a/plugins/composer/composer.plugin.zsh b/plugins/composer/composer.plugin.zsh index 218a13e5f..dd0b18e27 100644 --- a/plugins/composer/composer.plugin.zsh +++ b/plugins/composer/composer.plugin.zsh @@ -1,70 +1,76 @@ -# ------------------------------------------------------------------------------ -#          FILE:  composer.plugin.zsh -#   DESCRIPTION:  oh-my-zsh composer plugin file. -#        AUTHOR:  Daniel Gomes (me@danielcsgomes.com) -#       VERSION:  1.0.0 -# ------------------------------------------------------------------------------ - -# Composer basic command completion -_composer_get_command_list () { -    $_comp_command1 --no-ansi 2>/dev/null | sed "1,/Available commands/d" | awk '/^[ \t]*[a-z]+/ { print $1 }' -} - -_composer_get_required_list () { -    $_comp_command1 show -s --no-ansi 2>/dev/null | sed '1,/requires/d' | awk 'NF > 0 && !/^requires \(dev\)/{ print $1 }' -} - -_composer () { +## 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' +    _arguments '*:: :->subcmds' -    if (( CURRENT == 1 )) || ( ((CURRENT == 2)) && [ "$words[1]" = "global" ] ) ; then -        compadd $(_composer_get_command_list) +    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 -        compadd $(_composer_get_required_list) +      # 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 +  compdef _composer composer +  compdef _composer composer.phar +fi -# Aliases + +## Aliases  alias c='composer' -alias csu='composer self-update' -alias cu='composer update' -alias cr='composer require' -alias crm='composer remove' -alias ci='composer install'  alias ccp='composer create-project' -alias cdu='composer dump-autoload'  alias cdo='composer dump-autoload -o' -alias cgu='composer global update' +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)' -# 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 -    autoload -Uz _store_cache _retrieve_cache _cache_invalid +## 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" -    _retrieve_cache composer +  # If still not found, don't do the rest of the script +  (( $+commands[composer] )) || return 0 +fi -    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" +## Add Composer's global binaries to PATH +autoload -Uz _store_cache _retrieve_cache _cache_invalid +_retrieve_cache composer -    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 +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  | 
