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 ;;