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