mirror of
https://github.com/zsh-users/zsh-completions.git
synced 2026-09-17 16:00:19 +00:00
Having a vim modeline or emacs local variable line somewhere in the middle of the file isn't really helpful. By default, vim will only check the first and last 5 lines of a file for a modeline (assuming the modeline option is enabled). Emacs is even more strict about the type of local variable line that was in use, it will only check the first line of the file or the second line if the first line specifies a script interpreter (which isn't the case here). Move the vim modeline to the end of the file so that it can actually be found by vim but is out of the way for editing. For emacs more work is required, convert that to the more verbose Local Variables syntax which emacs will look for starting 3000 characters from the end of the file. Also there is no zsh mode for emacs (according to zsh-users/zsh-completions#75), use the "Shell-Script" mode instead. This seems to automatically detect that the files are for zsh. I'm not an emacs user, so I haven't tested that portion much. But, this does at least improve the syntax highlighting there.
457 lines
12 KiB
Bash
457 lines
12 KiB
Bash
#compdef symfony
|
|
# ------------------------------------------------------------------------------
|
|
# Description
|
|
# -----------
|
|
#
|
|
# Completion script for Symfony (http://www.symfony-project.org).
|
|
#
|
|
# ------------------------------------------------------------------------------
|
|
# Authors
|
|
# -------
|
|
#
|
|
# * aki77 (https://github.com/aki77)
|
|
#
|
|
# ------------------------------------------------------------------------------
|
|
|
|
|
|
_symfony () {
|
|
local curcontext="$curcontext" state line expl ret=1 cache_version
|
|
|
|
cache_version=$(_get_sf_cache_var version)
|
|
(( ${(P)+cache_version} == 0 )) && {
|
|
eval $cache_version=${${${(z)$($service -V)}[3]}%.*}
|
|
}
|
|
|
|
if [ ${(P)cache_version} = "1.0" ] ; then
|
|
_symfony10
|
|
return
|
|
fi
|
|
|
|
_arguments -C \
|
|
'(-T --tasks)'{-T,--tasks}'[list of the symfony tasks]' \
|
|
'(-V --version)'{-V,--version}'[version]' \
|
|
'1: :->tasks' \
|
|
'*:: :->args' && ret=0
|
|
|
|
case $state in
|
|
tasks)
|
|
_sf_tasks
|
|
;;
|
|
args)
|
|
local task args
|
|
|
|
task=$words[1]
|
|
args=(
|
|
${${${${${(M)${${${(z)${${"$($service help $task)"#*Usage:}#[[:cntrl:]]}%%[[:cntrl:]]*}//\[/}//\]/}:#--*}%%\"*}/=/"=-"}/(#b)--(app|application)=-/--$match[1]=-:application:_sf_apps}//(#b)--(env|environment)=-/--$match[1]=-:environment:_sf_environments}
|
|
)
|
|
|
|
case $task in
|
|
help)
|
|
args+=(
|
|
':task:_sf_tasks'
|
|
)
|
|
;;
|
|
|
|
app:routes)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':"route name":'
|
|
)
|
|
;;
|
|
|
|
configure:author)
|
|
_message 'project author'
|
|
;;
|
|
|
|
configure:database)
|
|
_message 'database dsn'
|
|
;;
|
|
|
|
generate:app)
|
|
_message 'new application name'
|
|
;;
|
|
|
|
generate:module)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':"new module name":'
|
|
)
|
|
;;
|
|
|
|
generate:project)
|
|
_message 'new project name'
|
|
;;
|
|
|
|
generate:task)
|
|
_message 'new task name'
|
|
;;
|
|
|
|
i18n:extract)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':"target culture":'
|
|
)
|
|
;;
|
|
|
|
i18n:find)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
)
|
|
;;
|
|
|
|
log:rotate)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':environment:_sf_environments'
|
|
)
|
|
;;
|
|
|
|
plugin:add-channel)
|
|
_message 'channel name'
|
|
;;
|
|
|
|
plugin:install)
|
|
_message 'plugin name'
|
|
;;
|
|
|
|
plugin:publish-assets)
|
|
args+=(
|
|
':plugin:_sf_plugins'
|
|
)
|
|
;;
|
|
|
|
plugin:uninstall)
|
|
_message 'plugin name'
|
|
;;
|
|
|
|
plugin:upgrade)
|
|
_message 'plugin name'
|
|
;;
|
|
|
|
project:deploy)
|
|
_message 'server name'
|
|
;;
|
|
|
|
project:disable|project:enable)
|
|
args+=(
|
|
':environment:_sf_environments'
|
|
'*:application:_sf_apps'
|
|
)
|
|
;;
|
|
|
|
project:optimize)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':environment:_sf_environments'
|
|
)
|
|
;;
|
|
|
|
propel:data-dump|doctrine:data-dump)
|
|
_message 'target filename'
|
|
;;
|
|
|
|
propel:data-load|doctrine:data-load)
|
|
args+=(
|
|
'*:file:_files'
|
|
)
|
|
;;
|
|
|
|
propel:generate-admin)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':model:_sf_models'
|
|
)
|
|
;;
|
|
|
|
propel:generate-module|propel:init-admin)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':module:_sf_modules_candidate'
|
|
':model:_sf_models'
|
|
)
|
|
;;
|
|
|
|
propel:generate-module-for-route|doctrine:generate-module-for-route)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':"route name":'
|
|
)
|
|
;;
|
|
|
|
doctrine:create-model-tables|doctrine:delete-model-files)
|
|
args+=(
|
|
'*:model:_sf_doctrine_models'
|
|
)
|
|
;;
|
|
|
|
doctrine:generate-admin)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
'*:model:_sf_doctrine_models'
|
|
)
|
|
;;
|
|
|
|
doctrine:generate-module)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':module:_sf_doctrine_modules_candidate'
|
|
':model:_sf_doctrine_models'
|
|
)
|
|
;;
|
|
|
|
test:coverage)
|
|
args+=(
|
|
'*:file:_files'
|
|
)
|
|
;;
|
|
|
|
test:functional)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
'*:test:_sf_functionaltests'
|
|
)
|
|
;;
|
|
|
|
test:unit)
|
|
args+=(
|
|
'*:test:_sf_unittests'
|
|
)
|
|
;;
|
|
|
|
esac
|
|
|
|
_arguments "$args[@]" && ret=0
|
|
return
|
|
;;
|
|
esac
|
|
return ret
|
|
}
|
|
|
|
_symfony10 () {
|
|
local curcontext="$curcontext" state line expl ret=1
|
|
|
|
_arguments -C \
|
|
'(-T --tasks)'{-T,--tasks}'[list of the symfony tasks]' \
|
|
'(-V --version)'{-V,--version}'[version]' \
|
|
'1: :->tasks' \
|
|
'*:: :->args' && ret=0
|
|
|
|
case $state in
|
|
tasks)
|
|
_sf10_tasks
|
|
;;
|
|
args)
|
|
local task args
|
|
|
|
task=$words[1]
|
|
args=()
|
|
|
|
case $task in
|
|
init-project)
|
|
_message 'new project name'
|
|
;;
|
|
|
|
init-app)
|
|
_message 'application name'
|
|
;;
|
|
|
|
init-module)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
)
|
|
;;
|
|
|
|
init-batch)
|
|
args+=(
|
|
':skeleton name:compadd default rotate'
|
|
':"script name":'
|
|
':application:_sf_apps'
|
|
)
|
|
;;
|
|
|
|
init-controller)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':environment:_sf_environments'
|
|
':"script name":'
|
|
':"debug?":compadd true false'
|
|
)
|
|
;;
|
|
|
|
log-rotate)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':environment:_sf_environments'
|
|
)
|
|
;;
|
|
|
|
propel-load-data|propel-build-all-load)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':environment:_sf_environments'
|
|
':fixtures:_sf_fixtures'
|
|
)
|
|
;;
|
|
|
|
clear-cache|cc)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':what:compadd template config'
|
|
)
|
|
;;
|
|
|
|
sync)
|
|
args+=(
|
|
':environment:_sf_environments'
|
|
':"real run?":compadd go'
|
|
)
|
|
;;
|
|
|
|
propel-init-crud|propel*-init-admin|propel-generate-crud)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':module:_sf_modules_candidate'
|
|
':model:_sf_models'
|
|
)
|
|
;;
|
|
|
|
doctrine-init-admin|doctrine-generate-crud)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':module:_sf_doctrine_modules_candidate'
|
|
':model:_sf_doctrine_models'
|
|
)
|
|
;;
|
|
|
|
test-unit)
|
|
args+=(
|
|
':test:_sf_unittests'
|
|
)
|
|
;;
|
|
|
|
test-functional)
|
|
args+=(
|
|
':application:_sf_apps'
|
|
':test:_sf_functionaltests'
|
|
)
|
|
;;
|
|
|
|
esac
|
|
|
|
_arguments "$args[@]" && ret=0
|
|
return
|
|
;;
|
|
esac
|
|
return ret
|
|
}
|
|
|
|
_sf_tasks () {
|
|
local tmp ns line cache_task
|
|
|
|
cache_task=$(_get_sf_cache_var task)
|
|
(( ${(P)+cache_task} == 0 )) && {
|
|
tmp=(
|
|
${${${(f)${"$($service -T)"##*Available tasks:}}##[[:blank:]][[:blank:]]}%%[[:blank:]]*}
|
|
)
|
|
eval "$cache_task=()"
|
|
ns=''
|
|
|
|
for line in $tmp; do
|
|
if [ $line[1] = ":" ] ; then
|
|
eval "$cache_task+=( ${ns}${line#:} )"
|
|
else
|
|
ns="${line}:"
|
|
fi
|
|
done
|
|
}
|
|
|
|
_wanted symfony-task expl 'Symfony task' compadd -a $cache_task
|
|
}
|
|
|
|
_sf10_tasks () {
|
|
local sf_tasks
|
|
|
|
sf_tasks=(
|
|
${${${(f)${"$($service -T)"#available pake tasks:}%%task aliases:*}#[[:blank:]][[:blank:]]}/[[:blank:]]*>[[:blank:]]/:}
|
|
)
|
|
|
|
_describe -t symfony-tasks 'Symfony task' sf_tasks
|
|
}
|
|
|
|
_sf_apps () {
|
|
_wanted application expl 'application' compadd \
|
|
${$(echo apps/*):t}
|
|
}
|
|
|
|
_sf_environments () {
|
|
local app
|
|
|
|
app=$([ -f apps/"$words[2]"/config/settings.yml ] && echo $words[2] || echo frontend)
|
|
if [ -r apps/$app/config/settings.yml ] ; then
|
|
_wanted environment expl 'environment' compadd \
|
|
${${${(M)${(@f)"$(<apps/$app/config/settings.yml)"}:#[[:alpha:]]*}%%:*}:#all}
|
|
fi
|
|
}
|
|
|
|
_sf_plugins () {
|
|
_wanted application expl 'plugin' compadd \
|
|
${$(echo plugins/*):t}
|
|
}
|
|
|
|
_sf_models () {
|
|
_wanted application expl 'model' compadd \
|
|
$(_get_sfmodels)
|
|
}
|
|
|
|
_sf_doctrine_models () {
|
|
_wanted model expl 'model' compadd \
|
|
$(_get_sf_doctrine_models)
|
|
}
|
|
|
|
|
|
_sf_modules_candidate () {
|
|
_wanted module expl 'module' compadd \
|
|
${$(_get_sfmodels):l}
|
|
}
|
|
|
|
_sf_doctrine_modules_candidate () {
|
|
_wanted module expl 'module' compadd \
|
|
${$(_get_sf_doctrine_models):l}
|
|
}
|
|
|
|
_sf_unittests () {
|
|
_wanted test expl 'test' compadd \
|
|
${${${$(echo test/unit/**/*Test.php):r}#test/unit/}%Test}
|
|
}
|
|
|
|
_sf_functionaltests () {
|
|
_wanted test expl 'test' compadd \
|
|
${${$(echo test/functional/$words[2]/*ActionsTest.php):t:r}%Test}
|
|
}
|
|
|
|
_sf_fixtures () {
|
|
_files -W $(pwd)/data
|
|
}
|
|
|
|
_get_sfmodels () {
|
|
echo ${${$(echo lib/model/*Peer.php):t:r}%Peer}
|
|
}
|
|
|
|
_get_sf_doctrine_models () {
|
|
echo ${${$(echo lib/model/doctrine/*Table.class.php):t:r:r}%Table}
|
|
}
|
|
|
|
_get_sf_cache_var () {
|
|
echo ${$(echo "_sf_cache_${(j:_:)@}$(pwd)")//[^[:alnum:]]/_}
|
|
}
|
|
|
|
_symfony "$@"
|
|
|
|
# Local Variables:
|
|
# mode: Shell-Script
|
|
# sh-indentation: 2
|
|
# indent-tabs-mode: nil
|
|
# sh-basic-offset: 2
|
|
# End:
|
|
# vim: ft=zsh sw=2 ts=2 et
|