# 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 pushd ~ >/dev/null if [[ ! -e "$QTOOLSPATH"/.version ]]; then touch "$QTOOLSPATH"/.version fi local current_version local remote_version current_version=$( cat "$QTOOLSPATH"/.version ) remote_version=$( curl -f -s -L https://six9.net/software/q-tools/current.txt ) if [[ -n "$remote_version" ]]; then if [[ "$remote_version" != "$current_version" ]]; then set -u echo "Update $current_version => $remote_version" mkdir -p "$QTOOLSPATH" find "$QTOOLSPATH" -maxdepth 1 -mindepth 1 -type d -exec rm -r \{\} \; curl -L -f -s https://six9.net/software/q-tools/current.tar.gz | \ tar xz -C "$QTOOLSPATH" set +u fi fi 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 } 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