From 5f6b0ac7fbfbb0e25d0d691efa1bf676ac9f6962 Mon Sep 17 00:00:00 2001
From: Marc Cornellà <hello@mcornella.com>
Date: Sun, 26 Dec 2021 18:58:12 +0100
Subject: style(composer): fix code and README style

---
 plugins/composer/composer.plugin.zsh | 68 +++++++++++++++---------------------
 1 file changed, 28 insertions(+), 40 deletions(-)

(limited to 'plugins/composer/composer.plugin.zsh')

diff --git a/plugins/composer/composer.plugin.zsh b/plugins/composer/composer.plugin.zsh
index 218a13e5f..ba29503e4 100644
--- a/plugins/composer/composer.plugin.zsh
+++ b/plugins/composer/composer.plugin.zsh
@@ -1,19 +1,3 @@
-# ------------------------------------------------------------------------------
-#          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 () {
     local curcontext="$curcontext" state line
     typeset -A opt_args
@@ -30,41 +14,45 @@ _composer () {
 compdef _composer composer
 compdef _composer composer.phar
 
-# 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 csu='composer self-update'
+alias cu='composer update'
 
-# 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
-- 
cgit v1.2.3-70-g09d2


From 70dfb6ef92f3bedc460e300e94e3456942ff328c Mon Sep 17 00:00:00 2001
From: Marc Cornellà <hello@mcornella.com>
Date: Sun, 26 Dec 2021 18:58:22 +0100
Subject: refactor(composer): improve completion and use official Zsh
 completion if available

---
 plugins/composer/composer.plugin.zsh | 34 +++++++++++++++++++++++++---------
 1 file changed, 25 insertions(+), 9 deletions(-)

(limited to 'plugins/composer/composer.plugin.zsh')

diff --git a/plugins/composer/composer.plugin.zsh b/plugins/composer/composer.plugin.zsh
index ba29503e4..f2076c220 100644
--- a/plugins/composer/composer.plugin.zsh
+++ b/plugins/composer/composer.plugin.zsh
@@ -1,18 +1,34 @@
-_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
-- 
cgit v1.2.3-70-g09d2


From cbd8481fe37dde252ee817a8157ed72b7bcad655 Mon Sep 17 00:00:00 2001
From: mikey dubs <mike@herebox.org>
Date: Fri, 9 Jul 2021 01:12:56 -0700
Subject: feat(composer): add `cs` alias for `composer show` (#10034)

Closes #10034
---
 plugins/composer/README.md           | 1 +
 plugins/composer/composer.plugin.zsh | 1 +
 2 files changed, 2 insertions(+)

(limited to 'plugins/composer/composer.plugin.zsh')

diff --git a/plugins/composer/README.md b/plugins/composer/README.md
index 00ada1e13..8c79c4109 100644
--- a/plugins/composer/README.md
+++ b/plugins/composer/README.md
@@ -29,5 +29,6 @@ Original author: Daniel Gomes <me@danielcsgomes.com>
 | `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                                  |
diff --git a/plugins/composer/composer.plugin.zsh b/plugins/composer/composer.plugin.zsh
index f2076c220..a3883a1f2 100644
--- a/plugins/composer/composer.plugin.zsh
+++ b/plugins/composer/composer.plugin.zsh
@@ -45,6 +45,7 @@ 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'
 
-- 
cgit v1.2.3-70-g09d2


From d384ccf31dca8b0a768c463087f156b7302c77c5 Mon Sep 17 00:00:00 2001
From: Raphael Stolt <raphael.stolt@gmail.com>
Date: Tue, 25 Apr 2017 19:52:55 +0200
Subject: feat(composer): add `cuh` alias for updating global packages (#6048)

Closes #6048
---
 plugins/composer/README.md           | 37 ++++++++++++++++++------------------
 plugins/composer/composer.plugin.zsh |  1 +
 2 files changed, 20 insertions(+), 18 deletions(-)

(limited to 'plugins/composer/composer.plugin.zsh')

diff --git a/plugins/composer/README.md b/plugins/composer/README.md
index 8c79c4109..ad6ed24bc 100644
--- a/plugins/composer/README.md
+++ b/plugins/composer/README.md
@@ -14,21 +14,22 @@ Original author: Daniel Gomes <me@danielcsgomes.com>
 
 ## Aliases
 
-| 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                                  |
+| 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 a3883a1f2..dd0b18e27 100644
--- a/plugins/composer/composer.plugin.zsh
+++ b/plugins/composer/composer.plugin.zsh
@@ -48,6 +48,7 @@ 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
-- 
cgit v1.2.3-70-g09d2