# source me to enable tools if [[ "$OSTYPE" = "darwin"* ]]; then QTOOLSPATH=$( realpath $( dirname "$BASH_SOURCE" ) ) else QTOOLSPATH=$( readlink -f $( dirname "$BASH_SOURCE" ) ) fi PATH=$PATH:"$QTOOLSPATH"/bin [[ "$1" = "-f" ]] && PATH="$QTOOLSPATH"/bin:$PATH . "$QTOOLSPATH"/q-tools-functions path_remove_duplicates [[ -f "$QTOOLSPATH"/tsv/tsvkit.sh ]] && . "$QTOOLSPATH"/tsv/tsvkit.sh &>/dev/null function _q-tools-reload { # reload self [[ -z "$QTOOLSPATH" ]] && return source "$QTOOLSPATH"/rc } function _q-tools-update { # update self [[ -z "$QTOOLSPATH" ]] && return [[ -w "$QTOOLSPATH" ]] || return "$QTOOLSPATH"/rc -u _q-tools-reload } function _q-tools-update-binary { # update self [[ -z "$QTOOLSPATH" ]] && return [[ -w "$QTOOLSPATH" ]] || return #local foo #echo "Updating with binary deletes the existing folder! sure? y/N" #read foo #[[ "$foo" = y ]] || return pushd ~ >/dev/null set -u rm -rf "$QTOOLSPATH" mkdir -p "$QTOOLSPATH" curl -L https://six9.net/software/q-tools/current.tar.gz | \ tar xz -C "$QTOOLSPATH" set +u popd > /dev/null _q-tools-reload } function _self_update() { touch "$QTOOLSPATH"/.lastupdate pushd "$QTOOLSPATH" > /dev/null if [[ -d .git ]]; then git remote get-url origin 2>&1 | grep -q https.*git.six9.net && { _q-tools-update-binary popd > /dev/null } if [[ "$1" = "-u" ]]; then git pull else timeout 10 git pull > /dev/null 2>&1 fi else _q-tools-update-binary fi popd > /dev/null } [[ "$1" = "-u" ]] && { _self_update -u unset -f _self_update } # Update self weekly, # if folder writable, if repository, if an interactive terminal, if not updated the last week TOOLS_TO_UPDATE=1 [[ -w "$QTOOLSPATH" ]] || TOOLS_TO_UPDATE=0 [[ -w "$QTOOLSPATH"/.git ]] || TOOLS_TO_UPDATE=0 [[ -t 0 ]] || TOOLS_TO_UPDATE=0 [[ -t 1 ]] || TOOLS_TO_UPDATE=0 [[ -t 2 ]] || TOOLS_TO_UPDATE=0 [[ -f "$QTOOLSPATH"/.lastupdate ]] || touch -t 0101010101 "$QTOOLSPATH"/.lastupdate 2> /dev/null [[ -w "$QTOOLSPATH"/.lastupdate ]] || TOOLS_TO_UPDATE=0 if [ $TOOLS_TO_UPDATE -eq 1 ]; then TOOLS_LASTUPDATE=$( "$QTOOLSPATH"/files/file-age "$QTOOLSPATH"/.lastupdate d ) [[ "$TOOLS_LASTUPDATE" -gt 7 ]] && _self_update unset TOOLS_LASTUPDATE fi unset TOOLS_TO_UPDATE unset -f _self_update