Version 1 (modified by 17 years ago) ( diff ) | ,
---|
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<TAB>
.
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 <lars@hankat.dk> # 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.