diff options
author | Joseph Kocherhans <joseph@jkocherhans.com> | 2009-09-11 23:15:59 +0000 |
---|---|---|
committer | Joseph Kocherhans <joseph@jkocherhans.com> | 2009-09-11 23:15:59 +0000 |
commit | 677ddcbb04b85541f7b39b95541f5b46817ea510 (patch) | |
tree | f7528d6104127df9800b402940b7f6e8bdb7db6f /extras | |
parent | a53601c6748cf98c777f156068c0290b2943287f (diff) | |
download | django-677ddcbb04b85541f7b39b95541f5b46817ea510.tar.gz |
Fixed #10752. Added more advanced bash completion. Thanks, Arthur Koziel.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@11526 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'extras')
-rwxr-xr-x | extras/django_bash_completion | 134 |
1 files changed, 4 insertions, 130 deletions
diff --git a/extras/django_bash_completion b/extras/django_bash_completion index b805af9e6f..420553fcfa 100755 --- a/extras/django_bash_completion +++ b/extras/django_bash_completion @@ -31,136 +31,10 @@ # # To uninstall, just remove the line from your .bash_profile and .bashrc. -# Enable extended pattern matching operators. -shopt -s extglob - _django_completion() { - local cur prev opts actions action_shell_opts action_runfcgi_opts - COMPREPLY=() - cur="${COMP_WORDS[COMP_CWORD]}" - prev="${COMP_WORDS[COMP_CWORD-1]}" - - # Standalone options - opts="--help --settings --pythonpath --noinput --noreload --format --indent --verbosity --adminmedia --version --locale --domain" - # Actions - actions="createcachetable createsuperuser compilemessages \ - dbshell diffsettings dumpdata flush inspectdb loaddata \ - makemessages reset runfcgi runserver shell sql sqlall sqlclear \ - sqlcustom sqlflush sqlindexes sqlreset sqlsequencereset startapp \ - startproject syncdb test validate" - # Action's options - action_shell_opts="--plain" - action_runfcgi_opts="host port socket method maxspare minspare maxchildren daemonize pidfile workdir" - - if [[ # django-admin.py, django-admin, ./manage, manage.py - ( ${COMP_CWORD} -eq 1 && - ( ${COMP_WORDS[0]} == django-admin.py || - ${COMP_WORDS[0]} == django-admin || - ${COMP_WORDS[0]} == ./manage.py || - ${COMP_WORDS[0]} == manage.py ) ) - || - # python manage.py, /some/path/python manage.py (if manage.py exists) - ( ${COMP_CWORD} -eq 2 && - ( $( basename -- ${COMP_WORDS[0]} ) == python?([1-9]\.[0-9]) ) && - ( $( basename -- ${COMP_WORDS[1]} ) == manage.py) && - ( -r ${COMP_WORDS[1]} ) ) - || - ( ${COMP_CWORD} -eq 2 && - ( $( basename -- ${COMP_WORDS[0]} ) == python?([1-9]\.[0-9]) ) && - ( $( basename -- ${COMP_WORDS[1]} ) == django-admin.py) && - ( -r ${COMP_WORDS[1]} ) ) - || - ( ${COMP_CWORD} -eq 2 && - ( $( basename -- ${COMP_WORDS[0]} ) == python?([1-9]\.[0-9]) ) && - ( $( basename -- ${COMP_WORDS[1]} ) == django-admin) && - ( -r ${COMP_WORDS[1]} ) ) ]] ; then - - case ${cur} in - -*) - COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) - action=$COMPREPLY - return 0 - ;; - *) - COMPREPLY=( $(compgen -W "${actions}" -- ${cur}) ) - action=$COMPREPLY - return 0 - ;; - esac - else - case ${prev} in - dumpdata|reset| \ - sql|sqlall|sqlclear|sqlcustom|sqlindexes| \ - sqlreset|sqlsequencereset|test) - # App completion - settings="" - # If settings.py in the PWD, use that - if [ -e settings.py ] ; then - settings="$PWD/settings.py" - else - # Use the ENV variable if it is set - if [ $DJANGO_SETTINGS_MODULE ] ; then - settings=$DJANGO_SETTINGS_MODULE - fi - fi - # Couldn't find settings so return nothing - if [ -z $settings ] ; then - COMPREPLY=() - # Otherwise inspect settings.py file - else - apps=`sed -n "/INSTALLED_APPS = (/,/)/p" $settings | \ - grep -v "django.contrib" | - sed -n "s/^[ ]*'\(.*\.\)*\(.*\)'.*$/\2 /pg" | \ - tr -d "\n"` - COMPREPLY=( $(compgen -W "${apps}" -- ${cur}) ) - fi - return 0 - ;; - - createcachetable|cleanup|compilemessages|dbshell| \ - diffsettings|inspectdb|makemessages| \ - runserver|startapp|startproject|syncdb| \ - validate) - COMPREPLY=() - return 0 - ;; - shell) - COMPREPLY=( $(compgen -W "$action_shell_opts" -- ${cur}) ) - return 0 - ;; - runfcgi) - COMPREPLY=( $(compgen -W "$action_runfcgi_opts" -- ${cur}) ) - return 0 - ;; - host*|port*|socket*|method*|maxspare*|minspare*|maxchildren*|daemonize*|pidfile*|workdir*) - if [ "$action" == "runfcgi" ] ; then - COMPREPLY=( $(compgen -W "$action_runfcgi_opts" -- ${cur}) ) - return 0 - fi - return 0 - ;; - *) - #COMPREPLY=( $(compgen -W "auth core" -- ${cur}) ) - COMPREPLY=() - return 0 - ;; - esac - fi + COMPREPLY=( $( COMP_WORDS="${COMP_WORDS[*]}" \ + COMP_CWORD=$COMP_CWORD \ + DJANGO_AUTO_COMPLETE=1 $1 ) ) } - -complete -F _django_completion django-admin.py manage.py django-admin - -# Support for multiple interpreters. -unset pythons -if command -v whereis &>/dev/null; then - python_interpreters=$(whereis python | cut -d " " -f 2-) - for python in $python_interpreters; do - pythons="${pythons} $(basename -- $python)" - done - pythons=$(echo $pythons | tr " " "\n" | sort -u | tr "\n" " ") -else - pythons=python -fi - -complete -F _django_completion -o default $pythons +complete -F _django_completion -o default django-admin.py manage.py |