Mercurial > hg > config
comparison .bashrc @ 305:fac01a1bcedf
add an apply-patch function
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Tue, 14 May 2013 18:29:24 -0700 |
parents | 7ed290454f50 |
children | 6095d439d1f2 |
comparison
equal
deleted
inserted
replaced
304:7ed290454f50 | 305:fac01a1bcedf |
---|---|
51 export PATH=~/firefox:~/bin:~/python:$PATH:/usr/sbin:/usr/games/bin | 51 export PATH=~/firefox:~/bin:~/python:$PATH:/usr/sbin:/usr/games/bin |
52 export PYTHONPATH=~/python:$PYTHONPATH:~/virtualenv | 52 export PYTHONPATH=~/python:$PYTHONPATH:~/virtualenv |
53 | 53 |
54 ### functions | 54 ### functions |
55 | 55 |
56 apply-patch() { | |
57 # apply a patch | |
58 # TODO: | |
59 # - extract this general pattern as a bash "decorator" like `lsdiff` in .bash_overrides | |
60 # - right now level=1; make this configurable (somehow) | |
61 if (( ! $# )) | |
62 then | |
63 echo "No patch supplied" | |
64 return 1 | |
65 fi | |
66 | |
67 for patch in $@ | |
68 do | |
69 if expr "$1" : 'http[s]\?://.*' &> /dev/null | |
70 then | |
71 IS_URL="true" | |
72 else | |
73 IS__URL="false" | |
74 fi | |
75 | |
76 if [[ ${IS_URL} == "true" ]] | |
77 then | |
78 if curl --location "${patch}" 2> /dev/null | (command patch -p1 --dry-run &> /dev/null) | |
79 then | |
80 curl --location "${patch}" 2> /dev/null | command patch -p1 | |
81 continue | |
82 else | |
83 echo "curl --location ${patch} 2> /dev/null | command patch -p1 --dry-run" | |
84 curl --location "${patch}" 2> /dev/null | command patch -p1 --dry-run | |
85 return $? | |
86 fi | |
87 else | |
88 if patch -p1 --dry-run < ${patch} | |
89 then | |
90 patch -p1 < ${patch} | |
91 continue | |
92 else | |
93 echo "patch -p1 --dry-run < ${patch}" | |
94 patch -p1 --dry-run < ${patch} | |
95 return $? | |
96 fi | |
97 fi | |
98 done | |
99 } | |
100 | |
56 cdwin() { | 101 cdwin() { |
57 # change directory to a window's location using its title | 102 # change directory to a window's location using its title, |
103 # as that is set to the cwd by PS1 [?] | |
104 # TODO: ssh windows | |
58 DIR=$(xwininfo | dictify.py xwininfo | awk '{ print $NF }' | sed 's/"//g') | 105 DIR=$(xwininfo | dictify.py xwininfo | awk '{ print $NF }' | sed 's/"//g') |
59 DIR=${DIR/\~/$HOME} | 106 DIR=${DIR/\~/$HOME} |
60 cd $DIR | 107 cd $DIR |
61 } | 108 } |
62 | 109 |
154 grep --color=auto -i -n -C 3 "$1" $i | 201 grep --color=auto -i -n -C 3 "$1" $i |
155 done | 202 done |
156 | 203 |
157 } | 204 } |
158 | 205 |
159 # make a temporary file if `tempfile` not available | |
160 tmpfile() { | 206 tmpfile() { |
207 # make a temporary file if `tempfile` not available | |
161 | 208 |
162 if [ "$#" == "0" ] | 209 if [ "$#" == "0" ] |
163 then | 210 then |
164 args="tmp" | 211 args="tmp" |
165 else | 212 else |
204 fn() { | 251 fn() { |
205 # full name | 252 # full name |
206 python -c "import os; print os.path.realpath('$*')" | 253 python -c "import os; print os.path.realpath('$*')" |
207 } | 254 } |
208 | 255 |
209 pyfile() { | |
210 # python file name | |
211 python -c "import $1; print $1.__file__" | |
212 } | |
213 | |
214 swap() { | 256 swap() { |
215 # swap two files | 257 # swap two files |
216 if [ "$#" != "2" ] | 258 if [ "$#" != "2" ] |
217 then | 259 then |
218 echo "Usage: $FUNCNAME <file1> <file2>" | 260 echo "Usage: $FUNCNAME <file1> <file2>" |
249 # which emacs | 291 # which emacs |
250 emacs -nw `which $@` | 292 emacs -nw `which $@` |
251 } | 293 } |
252 | 294 |
253 ### functions for python | 295 ### functions for python |
296 | |
297 pyfile() { | |
298 # python file path | |
299 python -c "import $1; print $1.__file__" | |
300 } | |
254 | 301 |
255 setup-all() { | 302 setup-all() { |
256 # setup all for development | 303 # setup all for development |
257 # TODO: flowerbed? | 304 # TODO: flowerbed? |
258 for i in * | 305 for i in * |