94 lines
2.4 KiB
Plaintext
Executable File
94 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"
|
|
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
|
|
|
|
|