annotate contrib/bash_completion @ 1076:01db658cc78a

tarball support v0.3 Hello, I'm slowly improving support for tarballs in Mercurial. Attached patch is made against current tip in Matt's repository - f859e9cba1b9, and contains everything done so far. Changes: - gzip and bzip2 tarballs are sent immediately without writing to temporary files (I was wrong Matt, it can be done very easy) - hgrc customization, you can choose which type (if any) you will support There's no easy way to support compression levels, since TarFile open() assume that it is 9. I tried to use gzopen(), and bz2open() methods instead, but it seems that headers of generated archives, are missing or wrong. We could eventually try to rewrite tarfile.py and include our own version into Mercurial, but I don't know if it's good idea... Wojtek
author Wojciech Milkowski <wmilkowski@interia.pl>
date Fri, 26 Aug 2005 20:51:34 -0700
parents bb3f23fe59f0
children 89f54e72581d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
1 _hg_commands()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
2 {
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
3 local commands="$(hg -v help | sed -e '1,/^list of commands:/d' \
952
dbfabfcb485e bash_completion: support GNU sed 3 and non-GNU sed
TK Soh <teekaysoh@yahoo.com>
parents: 935
diff changeset
4 -e '/^global options:/,$d' \
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
5 -e '/^ [^ ]/!d; s/[,:]//g;')"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
6
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
7 # hide debug commands from users, but complete them if
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
8 # specifically asked for
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
9 if [[ "$cur" == de* ]]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
10 commands="$commands debugcheckstate debugstate debugindex"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
11 commands="$commands debugindexdot debugwalk"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
12 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
13 COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$commands" -- "$cur") )
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
14 }
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
15
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
16 _hg_paths()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
17 {
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
18 local paths="$(hg paths | sed -e 's/ = .*$//')"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
19 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -W "$paths" -- "$cur" ))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
20 }
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
21
935
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
22 _hg_status()
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
23 {
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
24 local files="$( hg status -$1 | cut -b 3- )"
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
25 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -W "$files" -- "$cur" ))
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
26 }
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
27
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
28 _hg_tags()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
29 {
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
30 local tags="$(hg tags | sed -e 's/[0-9]*:[a-f0-9]\{40\}$//; s/ *$//')"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
31 COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$tags" -- "$cur") )
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
32 }
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
33
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
34 # this is "kind of" ugly...
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
35 _hg_count_non_option()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
36 {
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
37 local i count=0
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
38 local filters="$1"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
39
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
40 for (( i=1; $i<=$COMP_CWORD; i++ )); do
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
41 if [[ "${COMP_WORDS[i]}" != -* ]]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
42 for f in $filters; do
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
43 if [[ ${COMP_WORDS[i-1]} == $f ]]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
44 continue 2
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
45 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
46 done
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
47 count=$(($count + 1))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
48 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
49 done
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
50
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
51 echo $(($count - 1))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
52 }
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
53
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
54 _hg()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
55 {
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
56 local cur prev cmd opts i
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
57
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
58 COMPREPLY=()
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
59 cur="$2"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
60 prev="$3"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
61
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
62 # searching for the command
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
63 # (first non-option argument that doesn't follow -R/--repository)
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
64 for (( i=1; $i<=$COMP_CWORD; i++ )); do
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
65 if [[ ${COMP_WORDS[i]} != -* ]] \
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
66 && [ "${COMP_WORDS[i-1]}" != -R ] \
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
67 && [ "${COMP_WORDS[i-1]}" != --repository ]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
68 cmd="${COMP_WORDS[i]}"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
69 break
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
70 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
71 done
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
72
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
73 if [[ "$cur" == -* ]]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
74 opts="$(hg -v help | sed -e '1,/^global options/d; /^ -/!d')"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
75
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
76 if [ -n "$cmd" ]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
77 opts="$opts $(hg help "$cmd" | sed -e '/^ -/!d; s/ [^-][^ ]*//')"
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
78 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
79
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
80 COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$opts" -- "$cur") )
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
81 return
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
82 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
83
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
84 if [ "$prev" = -R ] || [ "$prev" = --repository ]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
85 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -d -- "$cur" ))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
86 return
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
87 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
88
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
89 if [ -z "$cmd" ] || [ $COMP_CWORD -eq $i ]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
90 _hg_commands
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
91 return
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
92 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
93
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
94 if [ "$cmd" != status ] && [ "$prev" = -r ] || [ "$prev" = --rev ]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
95 _hg_tags
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
96 return
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
97 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
98
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
99 case "$cmd" in
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
100 help)
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
101 _hg_commands
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
102 ;;
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
103 export|manifest|update|checkout|up|co)
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
104 _hg_tags
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
105 ;;
1018
bb3f23fe59f0 Add some aliases
mpm@selenic.com
parents: 981
diff changeset
106 pull|push|outgoing|incoming|out|in)
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
107 _hg_paths
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
108 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -d -- "$cur" ))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
109 ;;
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
110 paths)
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
111 _hg_paths
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
112 ;;
935
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
113 add)
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
114 _hg_status "u"
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
115 ;;
1018
bb3f23fe59f0 Add some aliases
mpm@selenic.com
parents: 981
diff changeset
116 commit|ci)
935
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
117 _hg_status "mra"
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
118 ;;
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
119 remove)
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
120 _hg_status "r"
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
121 ;;
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
122 forget)
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
123 _hg_status "a"
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
124 ;;
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
125 diff)
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
126 _hg_status "mra"
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
127 ;;
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
128 revert)
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
129 _hg_status "mra"
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
130 ;;
916
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
131 clone)
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
132 local count=$(_hg_count_non_option)
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
133 if [ $count = 1 ]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
134 _hg_paths
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
135 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
136 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -d -- "$cur" ))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
137 ;;
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
138 cat)
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
139 local count=$(_hg_count_non_option -o --output)
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
140 if [ $count = 2 ]; then
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
141 _hg_tags
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
142 else
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
143 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -f -- "$cur" ))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
144 fi
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
145 ;;
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
146 *)
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
147 COMPREPLY=(${COMPREPLY[@]:-} $( compgen -f -- "$cur" ))
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
148 ;;
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
149 esac
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
150
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
151 }
fe094cca9915 Add bash_completion to contrib
mpm@selenic.com
parents:
diff changeset
152
935
925563ff1b18 bash: Add smarter completion of add/commit/remove/forget/diff/revert
mpm@selenic.com
parents: 929
diff changeset
153 complete -o default -F _hg hg