mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-02-20 03:02:29 +01:00
Update the Laravel4 plugin. Support the completion commands and arguments
This commit is contained in:
parent
3913106b2e
commit
c06b086034
1 changed files with 71 additions and 8 deletions
|
|
@ -1,19 +1,82 @@
|
||||||
# Laravel4 basic command completion
|
# Laravel4 extend command & arguments completion
|
||||||
_laravel4_get_command_list () {
|
|
||||||
php artisan --no-ansi | sed "1,/Available commands/d" | awk '/^ [a-z]+/ { print $1 }'
|
_laravel4_parse_commands () {
|
||||||
|
local help_string
|
||||||
|
|
||||||
|
while read help_string; do
|
||||||
|
echo $help_string \
|
||||||
|
| awk -F" +|\) " '/^ [a-z]+/ { gsub("^ +","",$1); gsub(":","\:",$1); print $1"["$2"]" }'
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
_laravel4 () {
|
_laravel4_set_commands () {
|
||||||
if [ -f artisan ]; then
|
local laravel4_commands IFS=$'\n'
|
||||||
compadd `_laravel4_get_command_list`
|
|
||||||
|
laravel4_commands=(`php artisan --no-ansi | sed "1,/Available commands:/d" | _laravel4_parse_commands`)
|
||||||
|
|
||||||
|
_values '### Available commands:' $laravel4_commands
|
||||||
|
}
|
||||||
|
|
||||||
|
_laravel4_parse_arguments () {
|
||||||
|
local simple_args help_string regex arg_name alt_args description
|
||||||
|
|
||||||
|
simple_args=(--help --quiet --verbose --version --ansi --no-ansi --no-interaction --pretend --seed)
|
||||||
|
|
||||||
|
while read help_string; do
|
||||||
|
regex="^\ *(-[a-z-]+)([\ +\(-]+([a-zA-Z\|]+)\)|)[\) ]+(.+?)"
|
||||||
|
if [[ "$help_string" =~ "$regex" ]]; then
|
||||||
|
arg_name="${match[1]}"
|
||||||
|
alt_args=$(echo "${match[3]}" | sed -r 's/([a-zA-Z]+)/-\1/g' | sed 's/|/ /g')
|
||||||
|
description="${match[4]}"
|
||||||
|
|
||||||
|
# Detect allowed values for completion
|
||||||
|
value_fn=''
|
||||||
|
if [[ $arg_name =~ (-file|-path|Path)$ ]]; then
|
||||||
|
value_fn='_files'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $arg_name =~ -dir ]]; then
|
||||||
|
value_fn='_directories'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ${simple_args[(r)$arg_name]} == $arg_name ]]; then
|
||||||
|
printf "(%s)%s[%b]\n" "$alt_args" "$arg_name" "$description"
|
||||||
|
else
|
||||||
|
printf "%s=[%b]: :%s\n" "$arg_name" "$description" "$value_fn"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
_laravel4_set_arguments () {
|
||||||
|
local laravel4arguments IFS=$'\n'
|
||||||
|
|
||||||
|
laravel4arguments=(`php artisan --no-ansi --help "$1" | sed "1,/Options:/d" | _laravel4_parse_arguments`)
|
||||||
|
|
||||||
|
_arguments $laravel4arguments
|
||||||
|
}
|
||||||
|
|
||||||
|
_laravel4completion () {
|
||||||
|
local cmdline regex
|
||||||
|
|
||||||
|
cmdline=(${=words})
|
||||||
|
cmdline=(${cmdline[2,-1]})
|
||||||
|
|
||||||
|
regex="\ [a-z][a-z:_-]+"
|
||||||
|
if [[ $CURRENT == 2 ]] || ! [[ " ${(j/ /)cmdline}" =~ $regex ]]; then
|
||||||
|
_laravel4_set_commands
|
||||||
|
else
|
||||||
|
_arguments '*:: :{{ _laravel4_set_arguments ${cmdline[1]} }}'
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
compdef _laravel4 artisan
|
zstyle ':completion:*:descriptions' format '%B%d%b'
|
||||||
compdef _laravel4 la4
|
|
||||||
|
compdef _laravel4completion artisan
|
||||||
|
|
||||||
#Alias
|
#Alias
|
||||||
alias la4='php artisan'
|
alias la4='php artisan'
|
||||||
|
alias l='php artisan'
|
||||||
|
|
||||||
alias la4dump='php artisan dump-autoload'
|
alias la4dump='php artisan dump-autoload'
|
||||||
alias la4cache='php artisan cache:clear'
|
alias la4cache='php artisan cache:clear'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue