== Bash auto-completion for {{{django-admin.py}}}/{{{manage.py}}} == Can't you remember the options for django-admin.py or are you just plain lazy as me, then the following little script might be something for you. The following script will add auto completion to {{{django-admin.py}}} and {{{manage.py}}} for actions and options. It has the latest actions and options from trunk 5833. The script is limited to only auto-completing the actions and options. The script won't e.g find your application names if you type {{{manage.py adminindex somepartialappname}}}. === Installation === To install it, copy the script below and save it e.g. in a file {{{~/.djangocompletion.sh}}}. In your {{{~/.profile}}} you just run the script by e.g. adding the follwoing line: {{{ source ~/.djangocompletion.sh }}} You may also add the script directly in your {{{.profile}}} file. === Bash script === {{{ #!/bin/sh # # Initial author: Lars Holm Nielsen # Copyright-free _djangoadmin_complete() { # manage.py action [options] local cur prev actions base COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" base="${COMP_WORDS[1]}" # # Completion list of commands # actions='adminindex createcachetable dbshell diffsettings dumpdata flush inspectdb loaddata reset runfcgi runserver shell sql sqlall sqlclear sqlcustom sqlflush sqlindexes sqlreset sqlsequencereset startapp syncdb test validate' if [ "${prev##*/}" = "django-admin.py" ] then COMPREPLY=($(compgen -W "$actions" -- "$cur")) return 0 fi if [ "${prev##*/}" = "manage.py" ] then COMPREPLY=($(compgen -W "$actions" -- "$cur")) return 0 fi local results # # Complete the arguments to some of the basic commands. # case "${base}" in # [appname ...] adminindex|sql|sqlall|sqlclear|sqlcustom|sqlindexes|sqlreset|sqlsequencereset) results='' ;; # [tablename] createcachetable) results='' ;; # [--format=FORMAT] [--indent=INDENT] [appname ...] dumpdata) results='--format= --indent=' ;; # [--verbosity=VERBOSITY] [--noinput] syncdb|flush) results='--verbosity= --noinput' ;; # [--verbosity=VERBOSITY] fixture, fixture, ... loaddata) results='--verbosity=VERBOSITY' ;; # [--noinput][appname ...] reset) results='--noinput' ;; # [various KEY=val options, use `runfcgi help` for help] runfcgi) results='help' ;; # [--noreload] [--adminmedia=ADMIN_MEDIA_PATH] [optional port number, or ipaddr:port] runserver) results='--noreload --adminmedia=' ;; # [--plain] shell) results='--plain' ;; # [appname] startapp) results='' ;; # [--verbosity=VERBOSITY] [--noinput] [appname ...] test) results='--verbosity= --noinput' ;; esac results="$results --version -h --help --settings= --pythonpath=" COMPREPLY=($(compgen -W "$results" -- "$cur")) return 0 } complete -F _djangoadmin_complete django-admin.py complete -F _djangoadmin_complete manage.py }}} === Bugs === Since I'm not a big shell programmer, there's probably some bugs in the script. Feel free to edit the script if you find any or add more features to it.