body() { IFS= read -r header printf '%s\n' "$header" "$@" } safedir() { echo "$@ $(pwd)" | md5sum | cut -b-32 } diffWith() { diffCmd=$@ diffFile="/tmp/diffwith-$(safedir $diffCmd).patch" $diffCmd > $diffFile dos2unix -q $diffFile ( gvim -f $diffFile ; rm $diffFile ) & } showimage() { ( local pkg pkg=$1 pkg="${pkg:=*/*}" cd /var/tmp/portage/$pkg-*/image || return 1 find . -not -type d -print0 | xargs -0r ls -lvhF --color=auto du -shc */* ) } cov() { src=${1} src=$(realpath ${src:=$(pwd)}) cov=/tmp/cov.$$ all=$cov/all key=$cov/key html=$src/bin/cov/html test -d $src || ( echo "$src not a directory" && return 1 ) echo "Cleaning $src" find $src -name "*.gcda" -type f -delete find $src -name "*.run" -type f -delete echo "Building in ${src}" build $src -d0 variant=coverage echo "Extracting coverage data" mkdir -p $cov lcov -d $src -c -o $all --derive-func-data --no-external -b $src -q lcov --remove $all "*/bin/*" -o $key -q echo "Generating HTML" mkdir -p $html genhtml $key -o $html -s -k -t $src --demangle-cpp --sort --function-coverage -q --num-spaces=2 rm -rf $cov [ "${2}" != "0" ] && xdg-open file://$src/bin/cov/html/index.html } sizes() { find -path */release/* -type f -perm -111 -delete build variant=release find -path */release/* -type f -perm -111 | sort | xargs -r strip --strip-unneeded find -path */release/* -type f -perm -111 -printf "%p\t%s\n" | sort -k1 | \ column -N path,size -R path,size -t -s $'\t' | tee ~/new } PATH="/usr/lib/ccache/bin:$PATH" CORES=$(grep core\ id /proc/cpuinfo | sort -u | wc -l) CPUS=$(grep core\ id /proc/cpuinfo -c) if [ -n "$DISTCC_HOSTS" ] ; then TASKS=$(echo $DISTCC_HOSTS | tr ' ' '\n' | cut -d / -f2 | paste -s -d+ | bc) elif [ -x /usr/bin/distcc ] ; then TASKS=$(distcc -j) else TASKS=$((($CORES + $CPUS) / 2)) fi export FEATURES="ccache" alias :e="gvim" alias d="cd ~/dev" alias p="cd ~/dev/portage" alias ChuckNorris="sudo" alias l="/bin/ls -NlhvF --color" alias grep="/bin/grep -I --color=auto --exclude-dir=node_modules --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.svn --exclude-dir=bin --exclude=tags --exclude-dir=docs/html --exclude-dir=target --exclude-dir=.idea --exclude=*.iml" alias emerge-state='watch "( ps -C sandbox -o stime,cmd ; tail /var/log/emerge.log /var/tmp/portage/*/*/temp/build.log 2> /dev/null )"' alias df="/bin/df -hT" title() { echo -ne "\033]0;$@\007" } vg() { valgrind \ --show-leak-kinds=all \ --suppressions=$HOME/dev/valgrind.suppressions \ --leak-check=full \ --log-file=/var/tmp/vg.log \ $@ } build() { title "Build in progress" CCACHE_BASEDIR=$(git root) nice -n5 b2 -j$TASKS $@ rtn=$? if [ $rtn -eq 0 ]; then title "Build success ${PWD/#$HOME/\~}" else title "Build failed ${PWD/#$HOME/\~}" fi return $rtn } onchange() { $@ while inotifywait -qr . --exclude '/bin/|\.sw.|/target/|/\.git/|\.gcov' -e modify ; do clear printf '\e[3J' $@ done } autobuild() { onchange build $@ } autocov() { onchange cov . 0 } # CVS cvsd() { diffWith "cvs diff -wubB $@" } # SVN svnd() { diffWith "svn diff --force --no-diff-deleted -x -b $@" } # Git gitd() { diffWith "git diff --no-prefix --relative -b -M $@" } gitdc() { diffWith "git diff --cached --no-prefix --relative -b -M $@" } gppdmb() { PARENT=${1:-master} git checkout $PARENT && git pull --prune && git delete-merged-branches } createAllBranches() { for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do git branch --track "${branch#*/*/}" "$branch"; done } filterAllBranches() { git filter-branch --subdirectory-filter $1 --prune-empty --tag-name-filter cat -d /tmp/$$ -- $(git branch | cut -b 3-) } alias gst='git status' # Hg hgd() { diffWith "hg diff -p -b $@" } if [ "$(awk '$5=="/" {print $1}'