#compdef django-admin.py django-admin manage.py
local ret=1 state
if [ "$service" = "manage.py" ] && [ ! -x ./manage.py ]; then
return 0
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'
'--settings=[Python path to settings module]:settings'
'--traceback[print traceback on exception]'
)
_directories () {
_wanted directories expl directory _path_files -/ "$@" -
}
typeset -A opt_args
_arguments \
$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"
"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 -vdrop=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 (default: "django")]:domain'
{-a,--all}'[re-examine all code and templates]'
{-e,--extensions=}'[file extension(s) to examine (default: ".html")]:extension'
)
;;
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 $args && ret=0
;;
esac
return ret
Copyright 2K16 - 2K18 Indonesian Hacker Rulez