On Sun, Sep 28, 2008 at 08:24:53PM +0100, Chris Lamb wrote:
> Attached is a zsh completion script for Django 1.0.
Thanks.
Index: Completion/Unix/Command/.distfiles
===
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/.distfiles,v
retrieving revision 1.96
diff -u -r1.96 .distfiles
--- Completion/Unix/Command/.distfiles 21 Jul 2008 19:15:25 - 1.96
+++ Completion/Unix/Command/.distfiles 28 Sep 2008 19:32:45 -
@@ -42,6 +42,7 @@
_dict
_diff
_diffstat
+_django
_dmidecode
_du
_dvi
Index: Completion/Unix/Command/_django
===
RCS file: Completion/Unix/Command/_django
diff -N Completion/Unix/Command/_django
--- /dev/null 1 Jan 1970 00:00:00 -
+++ Completion/Unix/Command/_django 28 Sep 2008 19:32:45 -
@@ -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'
+)
+;;
+
+ dumpd