Browse Source

Better cake3 completion

Draniu 8 years ago
parent
commit
9a0f9d7e8b
1 changed files with 21 additions and 3 deletions
  1. 21 3
      plugins/cakephp3/cakephp3.plugin.zsh

+ 21 - 3
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'