diff -r 261778de26ff -r 620f9b141567 thirdparty/google_appengine/lib/django/extras/django_bash_completion --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/thirdparty/google_appengine/lib/django/extras/django_bash_completion Tue Aug 26 21:49:54 2008 +0000 @@ -0,0 +1,159 @@ +# ######################################################################### +# This bash script adds tab-completion feature to django-admin.py and +# manage.py. +# +# Testing it out without installing +# ================================= +# +# To test out the completion without "installing" this, just run this file +# directly, like so: +# +# . ~/path/to/django_bash_completion +# +# Note: There's a dot ('.') at the beginning of that command. +# +# After you do that, tab completion will immediately be made available in your +# current Bash shell. But it won't be available next time you log in. +# +# Installing +# ========== +# +# To install this, point to this file from your .bash_profile, like so: +# +# . ~/path/to/django_bash_completion +# +# Do the same in your .bashrc if .bashrc doesn't invoke .bash_profile. +# +# Settings will take effect the next time you log in. +# +# Uninstalling +# ============ +# +# 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 --version" + # Actions + actions="adminindex createcachetable dbshell diffsettings \ + inspectdb install reset runfcgi runserver \ + shell sql sqlall sqlclear sqlindexes sqlinitialdata \ + sqlreset sqlsequencereset startapp startproject \ + syncdb 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, ./manage, manage.py + ( ${COMP_CWORD} -eq 1 && + ( ${COMP_WORDS[0]} == django-admin.py || + ${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]} ) ) ]] ; 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 + adminindex|install|reset| \ + sql|sqlall|sqlclear|sqlindexes| \ + sqlinitialdata|sqlreset|sqlsequencereset) + # 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|dbshell|diffsettings| \ + inspectdb|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 +} + +complete -F _django_completion django-admin.py manage.py + +# 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