thirdparty/google_appengine/lib/django/extras/django_bash_completion
changeset 109 620f9b141567
--- /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