|
1 # ######################################################################### |
|
2 # This bash script adds tab-completion feature to django-admin.py and |
|
3 # manage.py. |
|
4 # |
|
5 # Testing it out without installing |
|
6 # ================================= |
|
7 # |
|
8 # To test out the completion without "installing" this, just run this file |
|
9 # directly, like so: |
|
10 # |
|
11 # . ~/path/to/django_bash_completion |
|
12 # |
|
13 # Note: There's a dot ('.') at the beginning of that command. |
|
14 # |
|
15 # After you do that, tab completion will immediately be made available in your |
|
16 # current Bash shell. But it won't be available next time you log in. |
|
17 # |
|
18 # Installing |
|
19 # ========== |
|
20 # |
|
21 # To install this, point to this file from your .bash_profile, like so: |
|
22 # |
|
23 # . ~/path/to/django_bash_completion |
|
24 # |
|
25 # Do the same in your .bashrc if .bashrc doesn't invoke .bash_profile. |
|
26 # |
|
27 # Settings will take effect the next time you log in. |
|
28 # |
|
29 # Uninstalling |
|
30 # ============ |
|
31 # |
|
32 # To uninstall, just remove the line from your .bash_profile and .bashrc. |
|
33 |
|
34 _django_completion() |
|
35 { |
|
36 COMPREPLY=( $( COMP_WORDS="${COMP_WORDS[*]}" \ |
|
37 COMP_CWORD=$COMP_CWORD \ |
|
38 DJANGO_AUTO_COMPLETE=1 $1 ) ) |
|
39 } |
|
40 complete -F _django_completion -o default django-admin.py manage.py django-admin |
|
41 |
|
42 _python_django_completion() |
|
43 { |
|
44 if [[ ${COMP_CWORD} -ge 2 ]]; then |
|
45 PYTHON_EXE=$( basename -- ${COMP_WORDS[0]} ) |
|
46 echo $PYTHON_EXE | egrep "python([2-9]\.[0-9])?" >/dev/null 2>&1 |
|
47 if [[ $? == 0 ]]; then |
|
48 PYTHON_SCRIPT=$( basename -- ${COMP_WORDS[1]} ) |
|
49 echo $PYTHON_SCRIPT | egrep "manage\.py|django-admin(\.py)?" >/dev/null 2>&1 |
|
50 if [[ $? == 0 ]]; then |
|
51 COMPREPLY=( $( COMP_WORDS="${COMP_WORDS[*]:1}" \ |
|
52 COMP_CWORD=$(( COMP_CWORD-1 )) \ |
|
53 DJANGO_AUTO_COMPLETE=1 ${COMP_WORDS[*]} ) ) |
|
54 fi |
|
55 fi |
|
56 fi |
|
57 } |
|
58 |
|
59 # Support for multiple interpreters. |
|
60 unset pythons |
|
61 if command -v whereis &>/dev/null; then |
|
62 python_interpreters=$(whereis python | cut -d " " -f 2-) |
|
63 for python in $python_interpreters; do |
|
64 pythons="${pythons} $(basename -- $python)" |
|
65 done |
|
66 pythons=$(echo $pythons | tr " " "\n" | sort -u | tr "\n" " ") |
|
67 else |
|
68 pythons=python |
|
69 fi |
|
70 |
|
71 complete -F _python_django_completion -o default $pythons |
|
72 |