Files
q-tools/rc
2025-11-04 09:52:10 +02:00

93 lines
2.4 KiB
Plaintext
Executable File

# 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"
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