vxSDK/install.sh

141 lines
3.0 KiB
Bash
Executable File

#! /usr/bin/env bash
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 Try to install the VsSDK
uninstall Try to uninstall the VsSDK
Options:
--prefix=<PREFIX> Installation prefix (default is ~/.local)
-h, --help Display this help
OEF
exit 0
}
#
# Parse arguments
#
target='install'
for arg; do case "$arg" in
--help | -h)
help;;
-v | --version)
echo "$VERSION"
exit 0;;
install)
target='install';;
update)
target='update';;
uninstall)
target='uninstall';;
*)
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 (package will not be removed) [y/N] ? ' reinstall
[[ "$reinstall" != 'y' ]] && exit 1
echo ''
./install.sh uninstall
fi
install -d $prefix/lib/vxsdk/vxsdk
cp -r requirements.txt assets vxsdk $prefix/lib/vxsdk/vxsdk
install -d $prefix/bin
echo '#! /usr/bin/env bash' > $prefix/bin/vxsdk
echo '' >> $prefix/bin/vxsdk
echo "source $prefix/lib/vxsdk/vxsdk/venv/bin/activate" >> $prefix/bin/vxsdk
echo "python3 $prefix/lib/vxsdk/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/vxsdk/__main__.py"
sed -e "s*%VERSION%*$VERSION*; s*%BUILD_HASH%*$build_hash*; s*%BUILD_DATE%*$build_date*" vxsdk/__main__.py > $f
mkdir -p $prefix/share/vxsdk
cd $prefix/lib/vxsdk/vxsdk
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip 2>&1 > /dev/null
pip install -r requirements.txt
deactivate
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