diff options
author | Clint Adams <clint@users.sourceforge.net> | 2008-09-28 19:37:58 +0000 |
---|---|---|
committer | Clint Adams <clint@users.sourceforge.net> | 2008-09-28 19:37:58 +0000 |
commit | bf59efddfa48dbed872daa5582136b5a723118a2 (patch) | |
tree | ff68330c1895cb0573c0f8628ff32189943bcb47 | |
parent | e6dec182d0b3184476a8ac260c0e798f29611f55 (diff) | |
download | zsh-bf59efddfa48dbed872daa5582136b5a723118a2.tar.gz zsh-bf59efddfa48dbed872daa5582136b5a723118a2.tar.xz zsh-bf59efddfa48dbed872daa5582136b5a723118a2.zip |
25764: completion for Django, from Chris Lamb.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | Completion/Unix/Command/.distfiles | 1 | ||||
-rw-r--r-- | Completion/Unix/Command/_django | 199 |
3 files changed, 206 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index e31d700b0..fc6debf1a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-09-28 Clint Adams <clint@zsh.org> + + * 25764: Completion/Unix/Command/.distfiles, + Completion/Unix/Command/_django: completion for Django, from Chris + Lamb. + 2008-09-28 Peter Stephenson <p.w.stephenson@ntlworld.com> * Mikael Magnusson: Src/utils.c: newline in getquery() is diff --git a/Completion/Unix/Command/.distfiles b/Completion/Unix/Command/.distfiles index 654f8a8d8..c8d935bd5 100644 --- a/Completion/Unix/Command/.distfiles +++ b/Completion/Unix/Command/.distfiles @@ -42,6 +42,7 @@ _dhclient _dict _diff _diffstat +_django _dmidecode _du _dvi diff --git a/Completion/Unix/Command/_django b/Completion/Unix/Command/_django new file mode 100644 index 000000000..82d5910f3 --- /dev/null +++ b/Completion/Unix/Command/_django @@ -0,0 +1,199 @@ +#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" + ) + + _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) + 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) + ;; + esac + + _arguments $args && ret=0 + ;; +esac + +return ret |