141 lines
3.0 KiB
Bash
Executable File
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
|