summaryrefslogtreecommitdiff
path: root/extras/django_bash_completion
diff options
context:
space:
mode:
Diffstat (limited to 'extras/django_bash_completion')
-rw-r--r--extras/django_bash_completion26
1 files changed, 22 insertions, 4 deletions
diff --git a/extras/django_bash_completion b/extras/django_bash_completion
index 829756c371..79efc5b3b1 100644
--- a/extras/django_bash_completion
+++ b/extras/django_bash_completion
@@ -79,10 +79,28 @@ _django_completion()
adminindex|install|reset| \
sql|sqlall|sqlclear|sqlindexes| \
sqlinitialdata|sqlreset|sqlsequencereset)
- # App completion isn't yet implemented, but here's where that
- # would go.
- # COMPREPLY=( $(compgen -W "auth core" -- ${cur}) )
- COMPREPLY=()
+ # 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
;;