# source me to enable tools TOOLSPATH=$( readlink -f $( dirname "$BASH_SOURCE" ) ) PATH=$PATH:"$TOOLSPATH"/bin # remove duplicate path PATH=$( echo $PATH | awk -F: '{for (i=1;i<=NF;i++) { if ( !x[$i]++ ) printf("%s:",$i); }}' | sed 's,:\+$,,g' ) export PATH . "$TOOLSPATH"/qcd_function function _self_update() { touch "$TOOLSPATH"/.lastupdate pushd "$TOOLSPATH" > /dev/null [[ "$1" = "-u" ]] && { hg pull -u } || { timeout 5 hg pull -u > /dev/null 2>&1 } popd > /dev/null } function _change_hg_repo() { [[ -w "$TOOLSPATH"/.hg ]] || return [[ -w "$TOOLSPATH"/.hg/hgrc ]] || return grep -q moonq.kapsi.fi/repo/ "$TOOLSPATH"/.hg/hgrc && { echo -e "Converting read only repository to bitbucket\n" sed 's,\s*default\s*=.*moonq.kapsi.fi.*,default = https://bitbucket.org/MoonQ/tools,' "$TOOLSPATH"/.hg/hgrc \ | diff "$TOOLSPATH"/.hg/hgrc - sed -i 's,\s*default\s*=.*moonq.kapsi.fi.*,default = https://bitbucket.org/MoonQ/tools,' "$TOOLSPATH"/.hg/hgrc } grep -q moonq.kapsi.fi/repoz/ "$TOOLSPATH"/.hg/hgrc && { echo -e "Converting writable repository to bitbucket\n" sed 's,\s*default\s*=.*moonq.kapsi.fi.*,default = ssh://hg@bitbucket.org/MoonQ/tools,' "$TOOLSPATH"/.hg/hgrc \ | diff "$TOOLSPATH"/.hg/hgrc - echo sed -i 's,\s*default\s*=.*moonq.kapsi.fi.*,default = ssh://hg@bitbucket.org/MoonQ/tools,' "$TOOLSPATH"/.hg/hgrc } } [[ "$1" = "-u" ]] && _self_update -u # Update self weekly, # if folder writable, if repository, if an interactive terminal, if not updated the last week [[ -w "$TOOLSPATH" ]] || return [[ -w "$TOOLSPATH"/.hg ]] || return [[ -t 0 ]] || return [[ -t 1 ]] || return [[ -t 2 ]] || return [[ -f "$TOOLSPATH"/.lastupdate ]] || touch -t 0101010101 "$TOOLSPATH"/.lastupdate 2> /dev/null [[ -w "$TOOLSPATH"/.lastupdate ]] || return _change_hg_repo unset -f _change_hg_repo TOOLS_LASTUPDATE=$(( $( date +%s ) - $( stat -c %Y "$TOOLSPATH"/.lastupdate ) )) [[ "$TOOLS_LASTUPDATE" -gt 604800 ]] && _self_update unset TOOLS_LASTUPDATE unset -f _self_update