# CakePHP 3 basic command completion
_cakephp3_get_command_list () {
	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 () {
	local -a has3rdargument
	has3rdargument=("all" "controller" "fixture" "model" "template")
	if [ -f bin/cake ]; then
		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
}

compdef _cakephp3 bin/cake
compdef _cakephp3 cake

#Alias
alias c3='bin/cake'
alias c3cache='bin/cake orm_cache clear'
alias c3migrate='bin/cake migrations migrate'

# CakePHP 3 basic command completion
_cakephp3_get_command_list () {
	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
		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
}

compdef _cakephp3 bin/cake
compdef _cakephp3 cake

#Alias
alias c3='bin/cake'
alias c3cache='bin/cake orm_cache clear'
alias c3migrate='bin/cake migrations migrate'

--- 
+++ 
@@ -8,21 +8,22 @@
 }
 
 _cakephp3_get_3rd_argument () {
-	bin/cake ${words[2]} ${words[3]} | grep '\-\ '| awk '{print $2}'
+	bin/cake ${words[2]} ${words[3]} | \grep '\-\ '| \awk '{print $2}'
 }
 
 _cakephp3 () {
-  has3rdargument=("all" "controller" "fixture" "model" "template")
-  if [ -f bin/cake ]; then
+	local -a has3rdargument
+	has3rdargument=("all" "controller" "fixture" "model" "template")
+	if [ -f bin/cake ]; then
 		if (( CURRENT == 2 )); then
-			compadd `_cakephp3_get_command_list`
+			compadd $(_cakephp3_get_command_list)
 		fi
 		if (( CURRENT == 3 )); then
-			compadd `_cakephp3_get_sub_command_list`
+			compadd $(_cakephp3_get_sub_command_list)
 		fi
 		if (( CURRENT == 4 )); then
-			if [[ ${has3rdargument[(i)${words[3]}]} -le ${#has3rdargument} ]] ; then ;
-			 compadd `_cakephp3_get_3rd_argument`
+			if [[ ${has3rdargument[(i)${words[3]}]} -le ${#has3rdargument} ]]; then
+				compadd $(_cakephp3_get_3rd_argument)
 			fi
 		fi
   fi
Fix styling in cakephp3 completion
