mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-07-13 05:21:40 +02:00
210 lines
5.9 KiB
Text
210 lines
5.9 KiB
Text
#compdef django-admin.py django-admin manage.py
|
|
|
|
local curcontext="$curcontext" state line expl ret=1
|
|
|
|
if [[ "$service" = "manage.py" && ! -x ./manage.py ]]; then
|
|
_default
|
|
return
|
|
fi
|
|
|
|
declare -ga common_args
|
|
common_args=(
|
|
'--help[display help information]'
|
|
'--version[display version information]'
|
|
'--pythonpath=[directory to add to the Python path]:directory:_directories -W / -P /'
|
|
'--settings=[python path to settings module]:settings'
|
|
'--traceback[print traceback on exception]'
|
|
)
|
|
|
|
typeset -A opt_args
|
|
_arguments -C \
|
|
$common_args \
|
|
':subcommand:->subcommand' \
|
|
'*::options:->options' && ret=0
|
|
|
|
case $state in
|
|
subcommand)
|
|
subcommands=(
|
|
"cleanup:remove old data from the database"
|
|
"compilemessages:compile .po files to .mo for use with gettext"
|
|
"createcachetable:creates table for SQL cache backend"
|
|
"createsuperuser:create a superuser"
|
|
"dbshell:run command-line client for the current database"
|
|
"diffsettings:display differences between the current settings and Django defaults"
|
|
"dumpdata:output contents of database as a fixture"
|
|
"flush:execute 'sqlflush' on the current database"
|
|
"inspectdb:output Django model module for tables in database"
|
|
"loaddata:install the named fixture(s) in the database"
|
|
"makemessages:pull out all strings marked for translation"
|
|
"reset:executes 'sqlreset' for the given app(s)"
|
|
"runfcgi:run this project as a fastcgi"
|
|
"runserver:start a lightweight web server for development"
|
|
"shell:run a Python interactive interpreter. Tries to use IPython, if it's available"
|
|
"sql:print the CREATE TABLE statements for the given app(s)"
|
|
"sqlall:print the CREATE TABLE, CREATE INDEX and custom statements for the given app(s)"
|
|
"sqlclear:print the DROP TABLE statements for the given app(s)"
|
|
"sqlcustom:print the custom table-modifying SQL statements for the given app(s)"
|
|
"sqlflush:print the SQL statements required to return all tables to installation state"
|
|
"sqlindexes:print the CREATE INDEX statements for the given app(s)"
|
|
"sqlreset:print the DROP TABLE and CREATE TABLE statements for the given app(s)"
|
|
"sqlsequencereset:print the SQL statements for resetting sequences for the given app(s)"
|
|
"startapp:create Django app directory in this project's directory"
|
|
"startproject:create a Django project directory structure for a given project name"
|
|
"syncdb:create database tables for apps in INSTALLED_APPS where required"
|
|
"test:run the test suite for the specified app, or the entire site"
|
|
"testserver:run a development server with data from the given fixture(s)"
|
|
"validate:validate all installed modules"
|
|
)
|
|
|
|
for cmd in $(./manage.py --help 2>&1 >/dev/null | \
|
|
awk -v drop=1 '{ if (!drop) print substr($0, 3) } /^Available subcommands/ { drop=0 }')
|
|
do
|
|
if ! echo $subcommands | grep -qs "${cmd}:"
|
|
then
|
|
subcommands+=($cmd)
|
|
fi
|
|
done
|
|
|
|
_describe -t subcommands 'django admin subcommand' subcommands && ret=0
|
|
;;
|
|
|
|
options)
|
|
declare -a args
|
|
args=(
|
|
$common_args
|
|
)
|
|
|
|
declare -a verbosity
|
|
verbosity=(
|
|
'--verbosity=:verbosity:(0 1 2):[verbosity level; 0=minimal, 1=normal, 2=all]'
|
|
)
|
|
|
|
declare -a locale
|
|
locale=(
|
|
{-l,--locale=}'[locale to process (default: all)]:locale'
|
|
)
|
|
|
|
declare -a noinput
|
|
noinput=(
|
|
'--noinput[do not prompt for any input]'
|
|
)
|
|
|
|
port_opts={,0.0.0.0\\:,127.0.0.1\\:}800{0,1}
|
|
|
|
_appname () {
|
|
local settings=""
|
|
if [ -e settings.py ]; then
|
|
settings="settings.py"
|
|
elif [ -n "${DJANGO_SETTINGS_MODULE}" ]; then
|
|
settings="${DJANGO_SETTINGS_MODULE}"
|
|
else
|
|
return 0
|
|
fi
|
|
|
|
_wanted appname expl appname compadd - $(command \
|
|
sed -n "/INSTALLED_APPS\s*=\s*(/,/)/p" ${settings} | \
|
|
sed -n "s/^\s*'\(.*\.\)*\(.*\)'.*$/\2 /pg")
|
|
}
|
|
|
|
case $words[1] in
|
|
compilemessages)
|
|
args+=$locale
|
|
;;
|
|
|
|
createcachetable)
|
|
args+=':tablename:'
|
|
;;
|
|
|
|
createsuperuser)
|
|
args+=(
|
|
$noinput
|
|
'--username[username for the superuser]:username'
|
|
'--email[email address for the superuser]:email'
|
|
)
|
|
;;
|
|
|
|
dumpdata)
|
|
args+=(
|
|
'--format=:format:(xml python json yaml):[serialization format for the fixtures]'
|
|
'--indent=[indent level to use when pretty-printing]:indent'
|
|
{-e,--exclude=}'[app to exclude]:exclude:_appname'
|
|
)
|
|
;;
|
|
|
|
flush)
|
|
args+=$verbosity
|
|
;;
|
|
|
|
loaddata)
|
|
args+=(
|
|
$verbosity
|
|
'*:fixture:'
|
|
)
|
|
;;
|
|
|
|
makemessages)
|
|
args+=(
|
|
$locale
|
|
$verbosity
|
|
{-d,--domain=}'[domain of the message files]:domain [django]:(django djangojs)'
|
|
{-a,--all}'[re-examine all code and templates]'
|
|
{-e,--extensions=}'[file extension(s) to examine]:extension [html]'
|
|
)
|
|
;;
|
|
|
|
runserver|runserver_plus)
|
|
args+=(
|
|
'--noreload[do not use auto-reloader]'
|
|
'--adminmedia=[directory from which to serve admin media]:directory:_directories'
|
|
':port:('$port_opts')'
|
|
)
|
|
;;
|
|
|
|
shell)
|
|
args+='--plain[use plain Python, not IPython]'
|
|
;;
|
|
|
|
reset|sql*)
|
|
args+='*:appname:_appname'
|
|
;;
|
|
|
|
startapp)
|
|
args+=':new_appname:'
|
|
;;
|
|
|
|
syncdb)
|
|
args+=(
|
|
$verbosity
|
|
$noinput
|
|
)
|
|
;;
|
|
|
|
"test")
|
|
args+=(
|
|
$verbosity
|
|
$noinput
|
|
'*:appname:_appname'
|
|
)
|
|
;;
|
|
|
|
testserver)
|
|
args+=(
|
|
$verbosity
|
|
'--addrport=:addrport:('$port_opts'):[port number or ipaddr:port to run server on]'
|
|
'*:fixture:'
|
|
)
|
|
;;
|
|
|
|
validate|runfcgi)
|
|
;;
|
|
|
|
*)
|
|
_files
|
|
;;
|
|
esac
|
|
|
|
_arguments -C $args && ret=0
|
|
;;
|
|
esac
|
|
|
|
return ret
|