198 lines
4.2 KiB
Bash
Executable File
198 lines
4.2 KiB
Bash
Executable File
#! /usr/bin/env bash
|
|
|
|
projdir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)"
|
|
prefix="$HOME/.local"
|
|
VERSION='0.12.0'
|
|
|
|
#
|
|
# Help screen
|
|
#
|
|
help() {
|
|
cat << OEF
|
|
Script used to manipulate the VxSDK, a set of tools for the Vhex Operating
|
|
System project.
|
|
|
|
Usage $0 [ACTION]
|
|
|
|
Actions:
|
|
bootstrap Try to bootstrap the vxSDK itself [default]
|
|
install Install the VxSDK
|
|
uninstall Uninstall the VxSDK
|
|
|
|
Options:
|
|
--force Force reinstallation
|
|
--prefix=<PREFIX> Installation prefix (default is ~/.local)
|
|
-h, --help Display this help
|
|
OEF
|
|
exit 0
|
|
}
|
|
|
|
|
|
|
|
#
|
|
# Parse arguments
|
|
#
|
|
|
|
target='install'
|
|
force_reinstall='false'
|
|
|
|
for arg; do case "$arg" in
|
|
--help | -h)
|
|
help;;
|
|
-v | --version)
|
|
echo "$VERSION"
|
|
exit 0;;
|
|
--force)
|
|
force_reinstall='true'
|
|
;;
|
|
|
|
install)
|
|
target='install';;
|
|
update)
|
|
target='update';;
|
|
uninstall)
|
|
target='uninstall';;
|
|
uninstall-cached)
|
|
target='uninstall-cached';;
|
|
*)
|
|
echo "error: unreconized argument '$arg', giving up." >&2
|
|
exit 1
|
|
esac; done
|
|
|
|
|
|
|
|
#
|
|
# Process
|
|
#
|
|
|
|
if [[ "$target" = "install" ]]
|
|
then
|
|
if [[ -d "$prefix/lib/vxsdk/vxsdk" ]]
|
|
then
|
|
echo 'warning : vxsdk is already installed !' >&2
|
|
read -n 1 -p 'Do you whant to re-install the vxSDK [y/N] ? ' -r reinstall
|
|
[[ "$reinstall" != 'y' ]] && exit 1
|
|
echo ''
|
|
"$projdir/install.sh" uninstall-cached
|
|
fi
|
|
|
|
install -d "$prefix/lib/vxsdk/vxsdk"
|
|
cp -r \
|
|
"$projdir/requirements.txt" \
|
|
"$projdir/assets" \
|
|
"$projdir/vxsdk" \
|
|
"$prefix/lib/vxsdk/"
|
|
|
|
install -d "$prefix/bin"
|
|
echo '#! /usr/bin/env bash' > "$prefix/bin/vxsdk"
|
|
echo '' >> "$prefix/bin/vxsdk"
|
|
echo "source $prefix/lib/vxsdk/venv/bin/activate" >> "$prefix/bin/vxsdk"
|
|
echo "python3 $prefix/lib/vxsdk/vxsdk \$@" >> "$prefix/bin/vxsdk"
|
|
echo 'deactivate' >> "$prefix/bin/vxsdk"
|
|
chmod +x "$prefix/bin/vxsdk"
|
|
|
|
build_date=$(date '+%Y-%m-%d')
|
|
build_hash=$(git rev-parse --short HEAD)
|
|
f="$prefix/lib/vxsdk/vxsdk/__main__.py"
|
|
sed \
|
|
-e "s*%VERSION%*$VERSION*" \
|
|
-e "s*%BUILD_HASH%*$build_hash*" \
|
|
-e "s*%BUILD_DATE%*$build_date*" \
|
|
"$projdir/vxsdk/__main__.py" \
|
|
> "$f"
|
|
|
|
mkdir -p "$prefix/share/vxsdk"
|
|
|
|
cd "$prefix/lib/vxsdk" || exit 1
|
|
if [[ ! -d venv ]] || [[ "$force_reinstall" == 'true' ]]
|
|
then
|
|
set -x; python3 -m venv venv; set +x
|
|
source venv/bin/activate
|
|
set -x
|
|
{ pip install --upgrade pip > /dev/null ; } 2>&1
|
|
pip install -r requirements.txt
|
|
set +x
|
|
deactivate
|
|
else
|
|
source venv/bin/activate
|
|
set -x; pip install -r requirements.txt; set +x
|
|
deactivate
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
|
|
# same as uninstall but do not remove the venv
|
|
if [[ "$target" = 'uninstall-cached' ]]
|
|
then
|
|
set -x
|
|
rm "$prefix/bin/vxsdk"
|
|
rm -rf "$prefix/lib/vxsdk/vxsdk"
|
|
rmdir "$prefix/share/vxsdk" 2>/dev/null || exit 0
|
|
echo 'vxSDK has been partially removed'
|
|
exit 0
|
|
fi
|
|
|
|
|
|
if [[ "$target" = 'uninstall' ]]
|
|
then
|
|
|
|
# TODO : rm -rf dependencies too
|
|
# TODO : add confirmation input
|
|
rm "$prefix/bin/vxsdk"
|
|
rm -rf "$prefix/lib/vxsdk"
|
|
rmdir "$prefix/share/vxsdk" 2>/dev/null || exit 0
|
|
echo 'vxSDK has been removed'
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
#if [[ "$target" = "update" ]]
|
|
#then
|
|
#
|
|
# git \
|
|
# clone \
|
|
# git@github.com:Vhex-org/vxSDK.git \
|
|
# --depth=1 \
|
|
# /tmp/vxSDK \
|
|
# > /dev/null 2>&1 || exit 84
|
|
# cd /tmp/vxSDK
|
|
#
|
|
# if [[ "$(./install.sh --version)" == "$VERSION" ]]
|
|
# then
|
|
# rm -rf /tmp/vxSDK
|
|
# echo 'already up to date !'
|
|
# exit 0
|
|
# fi
|
|
#
|
|
# _check=$(echo -e "$(./install.sh --version)\n$VERSION" | sort -V | head -n1)
|
|
#
|
|
# if [[ "$_check" != "$VERSION" ]]; then
|
|
# rm -rf /tmp/vxSDK
|
|
# echo 'already up to date !'
|
|
# exit 0
|
|
# fi
|
|
#
|
|
# echo "update $VERSION -> $(./install.sh --version)"
|
|
#
|
|
# ./install.sh uninstall
|
|
# ./install.sh install
|
|
#
|
|
# rm -rf /tmp/vxSDK
|
|
#
|
|
#fi
|
|
#
|
|
#
|
|
#
|
|
#if [[ "$target" = "uninstall" ]]
|
|
#then
|
|
#
|
|
# rm $prefix/bin/vxsdk
|
|
# rm -rf $prefix/lib/vxsdk
|
|
# rmdir $prefix/share/vxsdk 2>/dev/null || exit 0
|
|
# echo 'note: repositories cloned by vxSDK have not been removed'
|
|
# exit 0
|
|
#
|
|
#fi
|