Files
q-tools/rc
2016-11-17 12:01:53 +02:00

73 lines
2.7 KiB
Plaintext
Executable File

# source me to enable tools
TOOLSPATH=$( readlink -f $( dirname "$BASH_SOURCE" ) )
PATH=$PATH:"$TOOLSPATH"/bin
[[ "$1" = "-f" ]] && PATH="$TOOLSPATH"/bin:$PATH
# 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
[[ -f "$TOOLSPATH"/tsv/tsvkit.sh ]] && . "$TOOLSPATH"/tsv/tsvkit.sh
function _self_update() {
touch "$TOOLSPATH"/.lastupdate
pushd "$TOOLSPATH" > /dev/null
[[ "$1" = "-u" ]] && {
hg pull -u https://bitbucket.org/MoonQ/tools
_update_tsvkit
} || {
timeout 5 hg pull -u hg pull https://bitbucket.org/MoonQ/tools > /dev/null 2>&1
}
popd > /dev/null
}
function _update_tsvkit() {
mkdir -p "$TOOLSPATH"/tsv/lib
wget -qO "$TOOLSPATH"/tsv/tsvkit.sh https://bitbucket.org/anduril-dev/anduril/raw/anduril2/lang/bash/tsvkit.sh
wget -qO "$TOOLSPATH"/tsv/lib/tsvhead https://bitbucket.org/anduril-dev/anduril/raw/anduril2/lang/bash/lib/tsvhead
wget -qO "$TOOLSPATH"/tsv/lib/tsvtail https://bitbucket.org/anduril-dev/anduril/raw/anduril2/lang/bash/lib/tsvtail
}
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 _update_tsvkit