mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			212 lines
		
	
	
	
		
			5.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			212 lines
		
	
	
	
		
			5.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #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 -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 (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
 |