From 9a0f9d7e8bcefb4d9895ca185a35c42366e19b00 Mon Sep 17 00:00:00 2001
From: Draniu <sirsamvimes@gmail.com>
Date: Wed, 18 May 2016 23:58:12 +0200
Subject: Better cake3 completion

---
 plugins/cakephp3/cakephp3.plugin.zsh | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

(limited to 'plugins/cakephp3')

diff --git a/plugins/cakephp3/cakephp3.plugin.zsh b/plugins/cakephp3/cakephp3.plugin.zsh
index 28d5af2ea..2b0f58998 100644
--- a/plugins/cakephp3/cakephp3.plugin.zsh
+++ b/plugins/cakephp3/cakephp3.plugin.zsh
@@ -1,11 +1,30 @@
 # CakePHP 3 basic command completion
 _cakephp3_get_command_list () {
-	cakephp3commands=($(bin/cake completion commands));printf "%s\n" "${cakephp3commands[@]}"
+	bin/cake Completion commands
+}
+
+_cakephp3_get_sub_command_list () {
+	bin/cake Completion subcommands ${words[2]}
+}
+
+_cakephp3_get_3rd_argument () {
+	bin/cake ${words[2]} ${words[3]} | grep '\-\ '| awk '{print $2}'
 }
 
 _cakephp3 () {
+  has3rdargument=("all" "controller" "fixture" "model" "template")
   if [ -f bin/cake ]; then
-    compadd `_cakephp3_get_command_list`
+		if (( CURRENT == 2 )); then
+			compadd `_cakephp3_get_command_list`
+		fi
+		if (( CURRENT == 3 )); then
+			compadd `_cakephp3_get_sub_command_list`
+		fi
+		if (( CURRENT == 4 )); then
+			if [[ ${has3rdargument[(i)${words[3]}]} -le ${#has3rdargument} ]] ; then ;
+			 compadd `_cakephp3_get_3rd_argument`
+			fi
+		fi
   fi
 }
 
@@ -14,6 +33,5 @@ compdef _cakephp3 cake
 
 #Alias
 alias c3='bin/cake'
-
 alias c3cache='bin/cake orm_cache clear'
 alias c3migrate='bin/cake migrations migrate'
-- 
cgit v1.2.3-70-g09d2