mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	They are now called "makemessages", "compilemessages" and "cleanup". This is backwards incompatible for make-messages.py and compile-messages.py, although the old executables still exist for now and print an error pointing the caller to the right command to call. This reduces the number of binaries and man pages Django needs to install. Patch from Janis Leidel. git-svn-id: http://code.djangoproject.com/svn/django/trunk@7844 bcc190cf-cafb-0310-a4f2-bffc1f526a37
		
			
				
	
	
		
			167 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| # #########################################################################
 | |
| # 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 --noinput --noreload --format --indent --verbosity --adminmedia --version --locale --domain"
 | |
|     # Actions
 | |
|     actions="adminindex 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
 | |
|             adminindex|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
 | |
| }
 | |
| 
 | |
| 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
 |