Mercurial > hg > config
comparison .bashrc @ 295:e2564dd51334
slowly slowly, step by step...
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Sat, 11 May 2013 04:16:56 -0700 |
parents | 19070b2af257 |
children | ee3c1b65d6d1 |
comparison
equal
deleted
inserted
replaced
294:a0d830fd8a42 | 295:e2564dd51334 |
---|---|
2 | 2 |
3 # Test for an interactive shell. There is no need to set anything | 3 # Test for an interactive shell. There is no need to set anything |
4 # past this point for scp and rcp, and it's important to refrain from | 4 # past this point for scp and rcp, and it's important to refrain from |
5 # outputting anything in those cases. | 5 # outputting anything in those cases. |
6 if [[ $- != *i* ]] ; then | 6 if [[ $- != *i* ]] ; then |
7 # Shell is non-interactive. Be done now! | 7 # Shell is non-interactive. Be done now! |
8 return | 8 return |
9 fi | 9 fi |
10 | 10 |
11 # Enable colors for ls, etc. Prefer ~/.dir_colors #64489 | 11 # Enable colors for ls, etc. Prefer ~/.dir_colors #64489 |
12 if [[ -f ~/.dir_colors ]] ; then | 12 if [[ -f ~/.dir_colors ]] ; then |
13 eval $(dircolors -b ~/.dir_colors) | 13 eval $(dircolors -b ~/.dir_colors) |
14 elif [[ -f /etc/DIR_COLORS ]] ; then | 14 elif [[ -f /etc/DIR_COLORS ]] ; then |
15 eval $(dircolors -b /etc/DIR_COLORS) | 15 eval $(dircolors -b /etc/DIR_COLORS) |
16 fi | 16 fi |
17 | 17 |
18 # variables | 18 # variables |
19 export BROWSER=$(which firefox) | |
19 export CLICOLOR=1 | 20 export CLICOLOR=1 |
20 export EDITOR='emacs -nw' | 21 export EDITOR='emacs -nw' |
22 export JS_EDITLINE=1 | |
21 export MOZCONFIG=~/mozilla/mozconfigs/mozconfig | 23 export MOZCONFIG=~/mozilla/mozconfigs/mozconfig |
22 export MOZSOURCE=~/mozilla/src/mozilla-central | 24 export MOZSOURCE=~/mozilla/src/mozilla-central |
23 export MOZOBJ=~/mozilla/src/obj-browser | 25 export MOZOBJ=~/mozilla/src/obj-browser |
24 export JS_EDITLINE=1 | |
25 | 26 |
26 # aliases | 27 # aliases |
27 alias awd="python -c 'import os; print os.path.realpath(\".\")'" | 28 alias awd="python -c 'import os; print os.path.realpath(\".\")'" |
28 alias currentpatch='echo `hg root`/.hg/patches/`hg qapp -v | head -n 1 | cut -f 3 -d " "`' | 29 alias currentpatch='echo `hg root`/.hg/patches/`hg qapp -v | head -n 1 | cut -f 3 -d " "`' |
29 alias datestamp='date +%Y%m%d%H%M%S' | 30 alias datestamp='date +%Y%m%d%H%M%S' |
30 alias distribute='python setup.py egg_info -RDb "" sdist register upload' | 31 alias distribute='python setup.py egg_info -RDb "" sdist register upload' |
31 alias grep='grep --colour=auto' | 32 alias grep='grep --colour=auto' |
32 alias ls='ls --color=auto' | 33 alias ls='ls --color=auto' |
33 alias random="python -c 'import sys, random; foo = sys.argv[1:]; random.shuffle(foo); print \" \".join(foo)'" | 34 alias random="python -c 'import sys, random; foo = sys.argv[1:]; random.shuffle(foo); print \" \".join(foo)'" |
34 alias svnst='svn st | grep -v "^\?"' | |
35 alias wget='wget --no-check-certificate' | 35 alias wget='wget --no-check-certificate' |
36 alias xpcshell="LD_LIBRARY_PATH=${MOZOBJ}/dist/bin ${MOZOBJ}/dist/bin/xpcshell" | 36 alias xpcshell="LD_LIBRARY_PATH=${MOZOBJ}/dist/bin ${MOZOBJ}/dist/bin/xpcshell" |
37 | 37 |
38 # bzconsole aliases for filing bugs | 38 # bzconsole aliases for filing bugs |
39 alias mozbase-bug="bz new Mozbase --cc ':wlach'" | 39 alias mozbase-bug="bz new Mozbase --cc ':wlach'" |
40 alias mozbuild-bug="bz new --product Core 'Build Config' --cc ':gps'" | |
40 alias mozharness-bug="bz new 'Release Engineering: Automation (General)' --cc ':aki' --whiteboard 'mozharness'" | 41 alias mozharness-bug="bz new 'Release Engineering: Automation (General)' --cc ':aki' --whiteboard 'mozharness'" |
41 alias releng-bug="bz new 'Release Engineering: Automation (General)'" | 42 alias releng-bug="bz new 'Release Engineering: Automation (General)'" |
42 alias talos-bug="bz new Talos --cc ':jmaher' --cc ':BYK'" | 43 alias talos-bug="bz new Talos --cc ':jmaher' --cc ':BYK'" |
43 alias mozbuild-bug="bz new --product Core 'Build Config' --cc ':gps'" | |
44 | 44 |
45 # PROMPT | 45 # PROMPT |
46 PS1='│' | 46 PS1='│' |
47 PS2='.' | 47 PS2='.' |
48 PROMPT_COMMAND='echo -ne "\033]0;${SSH_CLIENT/*/$HOSTNAME:}${PWD/~/~}\007"' | 48 PROMPT_COMMAND='echo -ne "\033]0;${SSH_CLIENT/*/$HOSTNAME:}${PWD/~/~}\007"' |
49 | 49 |
50 # PATHs | 50 # PATHs |
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 # | |
55 export BROWSER=$(which firefox) | |
56 | |
57 ### functions | 54 ### functions |
58 | 55 |
59 cdwin() { | 56 cdwin() { |
60 # change directory to a window's location using its title | 57 # change directory to a window's location using its title |
61 DIR=$(xwininfo | dictify.py xwininfo | awk '{ print $NF }' | sed 's/"//g') | 58 DIR=$(xwininfo | dictify.py xwininfo | awk '{ print $NF }' | sed 's/"//g') |
62 DIR=${DIR/\~/$HOME} | 59 DIR=${DIR/\~/$HOME} |
63 cd $DIR | 60 cd $DIR |
64 } | |
65 | |
66 eend() { | |
67 # edit the end of a file with emacs | |
68 FILE=$1 | |
69 shift | |
70 emacs +`wc -l "$FILE"` $@ | |
71 } | |
72 | |
73 git-diff-master() { | |
74 git diff $(git merge-base HEAD master) | |
75 } | 61 } |
76 | 62 |
77 function colors() { | 63 function colors() { |
78 | 64 |
79 CLR_WHITE="\033[0;37m" | 65 CLR_WHITE="\033[0;37m" |
94 CLR_YELLOWBOLD="\033[1;33m" | 80 CLR_YELLOWBOLD="\033[1;33m" |
95 CLR_NOTHING="\033[0m" | 81 CLR_NOTHING="\033[0m" |
96 } | 82 } |
97 colors | 83 colors |
98 | 84 |
85 eend() { | |
86 # edit the end of a file with emacs | |
87 FILE=$1 | |
88 shift | |
89 emacs +`wc -l "$FILE"` $@ | |
90 } | |
91 | |
92 git-diff-master() { | |
93 # differences of a git repository with master | |
94 git diff $(git merge-base HEAD master) | |
95 } | |
96 | |
99 # nice fast find function | 97 # nice fast find function |
100 EXCLUDES="(\.svn)|(\.mo$)|(\.po$)|(\.pyc$)" | 98 EXCLUDES="(\.svn)|(\.mo$)|(\.po$)|(\.pyc$)" |
101 ff() { | 99 ff() { |
102 | 100 |
103 if (( $# < 2 )) | 101 if (( $# < 2 )) |
154 grep --color=auto -i -n -C 3 "$1" $i | 152 grep --color=auto -i -n -C 3 "$1" $i |
155 done | 153 done |
156 | 154 |
157 } | 155 } |
158 | 156 |
159 # make a temporary file | 157 # make a temporary file if `tempfile` not available |
160 tmpfile() { | 158 tmpfile() { |
161 | 159 |
162 if [ "$#" == "0" ] | 160 if [ "$#" == "0" ] |
163 then | 161 then |
164 args="tmp" | 162 args="tmp" |
165 else | 163 else |
166 args=$@ | 164 args=$@ |
167 fi | 165 fi |
168 | 166 |
169 for i in $args | 167 for i in $args |
170 do | 168 do |
171 NEWNAME=${i}.$RANDOM | 169 NEWNAME=${i}.$RANDOM |
172 | 170 |
173 while [ -e $NEWNAME ] | 171 while [ -e $NEWNAME ] |
174 do | 172 do |
175 NEWNAME=${NEWNAME}.tmp | 173 NEWNAME=${NEWNAME}.tmp |
176 done | 174 done |
177 echo "$NEWNAME" | 175 echo "$NEWNAME" |
178 done | 176 done |
179 } | 177 } |
180 | 178 |
181 edpe() { | 179 edpe() { |
182 # edit and pipe the buffer to stdout | 180 # edit and pipe the buffer to stdout |
183 FILE=`tmpfile` | 181 FILE=`tmpfile` |
184 $EDITOR $FILE | 182 $EDITOR $FILE |
185 cat $FILE | 183 cat $FILE |
186 rm $FILE | 184 rm $FILE |
185 } | |
186 | |
187 isrunning() { | |
188 # is a process running? (by name) | |
189 # see also: talos for a better version | |
190 for i in "$@" | |
191 do | |
192 ps axwww | grep "$i" | grep -v 'grep' | |
193 done | sort | uniq | |
194 | |
195 } | |
196 | |
197 killbyname() { | |
198 # kill a process by name | |
199 kill `isrunning "$@" | awk '{ print $1 }' | onelineit.py` | |
200 } | |
201 | |
202 fn() { | |
203 # full name | |
204 python -c "import os; print os.path.realpath('$*')" | |
205 } | |
206 | |
207 pyfile() { | |
208 # python file name | |
209 python -c "import $1; print $1.__file__" | |
187 } | 210 } |
188 | 211 |
189 swap() { | 212 swap() { |
190 # swap two files | 213 # swap two files |
191 if [ "$#" != "2" ] | 214 if [ "$#" != "2" ] |
192 then | 215 then |
193 echo "Usage: $FUNCNAME <first_arg> <second_arg>" | 216 echo "Usage: $FUNCNAME <file1> <file2>" |
194 return | 217 return |
195 fi | 218 fi |
196 for i in "$1" "$2" | 219 for i in "$1" "$2" |
197 do | 220 do |
198 if [ ! -w "$i" ] | 221 if [ ! -w "$i" ] |
201 return 1 | 224 return 1 |
202 fi | 225 fi |
203 done | 226 done |
204 | 227 |
205 NEWNAME=`basename $1`.$RANDOM | 228 NEWNAME=`basename $1`.$RANDOM |
206 | |
207 while [ -e $NEWNAME ] | 229 while [ -e $NEWNAME ] |
208 do | 230 do |
209 NEWNAME=${NEWNAME}.tmp | 231 NEWNAME=${NEWNAME}.tmp |
210 echo "$NEWNAME" | 232 echo "$NEWNAME" |
211 done | 233 done |
212 | 234 |
213 mv `basename $1` $NEWNAME | 235 mv "$1" "$NEWNAME" |
214 mv `basename $2` `basename $1` | 236 mv "$2" "$1" |
215 mv $NEWNAME `basename $2` | 237 mv "$NEWNAME" "$2" |
216 } | 238 } |
217 | 239 |
218 isrunning() { | 240 |
219 # is a process running? (by name) | |
220 # see also: talos for a better version | |
221 for i in "$@" | |
222 do | |
223 ps axwww | grep "$i" | grep -v 'grep' | |
224 done | sort | uniq | |
225 | |
226 } | |
227 | |
228 killbyname() { | |
229 # kill a process by name | |
230 # see also: talos for a better version | |
231 kill `isrunning "$@" | awk '{ print $1 }' | onelineit.py` | |
232 } | |
233 | |
234 # full name | |
235 fn() { | |
236 python -c "import os; print os.path.realpath('$*')" | |
237 } | |
238 | |
239 # which view | |
240 whview() { | 241 whview() { |
242 # which view | |
241 less `which $@` | 243 less `which $@` |
242 } | 244 } |
243 | 245 |
244 # which emacs | |
245 whemacs() { | 246 whemacs() { |
247 # which emacs | |
246 emacs -nw `which $@` | 248 emacs -nw `which $@` |
247 } | 249 } |
248 | 250 |
249 pyfile() { | 251 ### functions for python |
250 # python file name | 252 |
251 python -c "import $1; print $1.__file__" | 253 setup-all() { |
254 # setup all for development | |
255 # TODO: flowerbed? | |
256 for i in * | |
257 do | |
258 if [ -e "${i}/setup.py" ] | |
259 then | |
260 cd "${i}" | |
261 python setup.py develop | |
262 cd .. | |
263 fi | |
264 done | |
252 } | 265 } |
253 | 266 |
254 ### functions for version control systems | 267 ### functions for version control systems |
255 | 268 |
256 svndance(){ | 269 svndance(){ |
266 return 1 | 279 return 1 |
267 fi | 280 fi |
268 } | 281 } |
269 | 282 |
270 difffiles() { | 283 difffiles() { |
271 grep '^+++ ' $@ | sed 's/+++ b\///' | 284 grep '^+++ ' $@ | sed 's/+++ b\///' |
272 } | 285 } |
273 | 286 |
274 hg-update-all() { | 287 hg-update-all() { |
275 for i in *; | 288 # update all hg repositories in the current directory |
276 do | 289 for i in *; |
277 if [ -e $i/.hg ] | 290 do |
278 then | 291 if [ -e $i/.hg ] |
279 cd $i | 292 then |
280 hg pull | 293 cd $i |
281 hg update | 294 hg pull |
282 cd - | 295 hg update |
283 fi | 296 cd - |
284 done | 297 fi |
298 done | |
285 } | 299 } |
286 | 300 |
287 hg-qcommit() { | 301 hg-qcommit() { |
288 message=$1 | 302 message=$1 |
289 hg qrefresh | 303 hg qrefresh |
290 if [ -z "${message}" ] | 304 if [ -z "${message}" ] |
291 then | 305 then |
292 hg qcommit | 306 hg qcommit |
293 else | 307 else |
294 hg qcommit -m "${message}" | 308 hg qcommit -m "${message}" |
295 fi | 309 fi |
296 hgroot=$(hg root) | 310 hgroot=$(hg root) |
297 patches=${hgroot}/.hg/patches/ | 311 patches=${hgroot}/.hg/patches/ |
298 if [ -e ${patches}.hg ] | 312 if [ -e ${patches}.hg ] |
299 then | 313 then |
300 cd ${patches} | 314 cd ${patches} |
301 hg push | 315 hg push |
302 fi | 316 fi |
303 cd - | 317 cd - |
304 } | 318 } |
305 | 319 |
306 hgrc() { | 320 hgrc() { |
307 # write an hgrc file | 321 # write an hgrc file |
308 # TODO: in the case you're in an `hg root`...what then? | 322 # TODO: in the case you're in an `hg root`...what then? |
317 } | 331 } |
318 | 332 |
319 ### functions for web content | 333 ### functions for web content |
320 | 334 |
321 blog-file() { | 335 blog-file() { |
322 echo "$HOME/web/blog/k0s/entries/public/$1" | 336 echo "$HOME/web/blog/k0s/entries/public/$1" |
323 } | 337 } |
324 | 338 |
325 flatten() { | 339 flatten() { |
326 directory=$PWD | 340 directory=$PWD |
327 if [ "$#" == "1" ] | 341 if [ "$#" == "1" ] |
368 source ~/.bash_overrides | 382 source ~/.bash_overrides |
369 | 383 |
370 ### regenerate fluxbox menus here for convenience | 384 ### regenerate fluxbox menus here for convenience |
371 MENU=~/web/site/programs.html | 385 MENU=~/web/site/programs.html |
372 regeneratefluxmenu() { | 386 regeneratefluxmenu() { |
373 if [ -e $MENU ] | 387 if [ -e $MENU ] |
374 then | 388 then |
375 html2flux.py $MENU > ~/.fluxbox/applications | 389 # XXX could be safer |
376 fi | 390 html2flux.py $MENU > ~/.fluxbox/applications |
391 fi | |
377 } | 392 } |
378 regeneratefluxmenu | 393 regeneratefluxmenu |