mirror of
https://github.com/elisspace/rtinst.git
synced 2026-08-29 15:44:06 +00:00
109 lines
3.1 KiB
Bash
Executable File
109 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
######################################################################
|
|
#
|
|
# Copyright (c) 2015 arakasi72 (https://github.com/arakasi72)
|
|
#
|
|
# --> Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
|
|
#
|
|
######################################################################
|
|
|
|
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/bin:/sbin
|
|
|
|
rundir=$(dirname $(readlink -f $0))
|
|
branch=$1
|
|
|
|
# function to ask user for y/n response
|
|
ask_user(){
|
|
local answer
|
|
while true
|
|
do
|
|
read answer
|
|
case $answer in [Yy]* ) return 0 ;;
|
|
[Nn]* ) return 1 ;;
|
|
* ) echo "Enter y or n";;
|
|
esac
|
|
done
|
|
}
|
|
|
|
if [ "$(id -u)" != "0" ]; then
|
|
echo "Must be run as root, directly or with sudo"
|
|
exit 1
|
|
fi
|
|
|
|
# kill apt-daily.service if running
|
|
if [[ $(systemctl list-units --all apt-daily.service | fgrep -c apt-daily.service) -gt 0 ]]; then
|
|
systemctl stop apt-daily.service > /dev/null 2>&1
|
|
systemctl kill --kill-who=all apt-daily.service > /dev/null 2>&1
|
|
sleep 5
|
|
fi
|
|
|
|
apt-get -qq update
|
|
|
|
if [ $(dpkg-query -W -f='${Status}' git 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
|
|
echo "Installing git"
|
|
apt-get -yqq install git 2>&1 >> /dev/null
|
|
fi
|
|
|
|
if [ $(dpkg-query -W -f='${Status}' ca-certificates 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
|
|
echo "Installing ca-certificates"
|
|
apt-get -yqq install ca-certificates 2>&1 >> /dev/null
|
|
fi
|
|
|
|
|
|
if [ -d /etc/rtinst ] && [ -z $branch ]; then
|
|
cd /etc/rtinst
|
|
branch=$(basename "$(git symbolic-ref -q HEAD)")
|
|
if [ -z $branch ]; then
|
|
branch=$(git describe --tags --exact-match)
|
|
if [ ${branch:0:1} = v ]; then
|
|
latest=$(curl -s "https://api.github.com/repos/arakasi72/rtinst/releases/latest" | awk -F '"' '/tag_name/{print $4}')
|
|
if [ $branch != $latest ]; then
|
|
echo "Updating from $branch to $latest"
|
|
branch=$latest
|
|
else
|
|
echo "Already using the latest version, rtinst $branch"
|
|
echo -n "Do you wish to reinstall rtinst y/n? "
|
|
if ! ask_user; then
|
|
exit
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
if [ $(git ls-remote --tags --heads https://github.com/arakasi72/rtinst.git $branch | wc -l) -eq 0 ]; then
|
|
echo "$branch has been deleted, using latest numbered release instead"
|
|
branch=release
|
|
fi
|
|
fi
|
|
|
|
if [ -z $branch ] || [ $branch = release ]; then
|
|
branch=$(basename "$(git ls-remote --tags https://github.com/arakasi72/rtinst.git | grep -o 'refs/tags/v.*' | sort -V | tail -1)")
|
|
if [ -z $branch ]; then
|
|
echo "Could not find a numbered release, using master instead"
|
|
branch=master
|
|
fi
|
|
fi
|
|
|
|
if [ $(git ls-remote --tags --heads https://github.com/arakasi72/rtinst.git $branch | wc -l) -eq 0 ]; then
|
|
echo "Could not find $branch, please try again"
|
|
exit
|
|
fi
|
|
|
|
echo "Installing rtinst $branch"
|
|
cd
|
|
rm -fr /etc/rtinst
|
|
git clone -q https://github.com/arakasi72/rtinst.git /etc/rtinst
|
|
cd /etc/rtinst
|
|
git checkout $branch > /dev/null 2>&1
|
|
cd
|
|
ln -sf /etc/rtinst/scripts/* /usr/local/bin
|
|
ln -sf /etc/rtinst/rtsetup /usr/local/bin
|
|
|
|
echo "Installation complete"
|
|
echo
|
|
echo "You can now run rtinst and the additional supporting scripts"
|
|
|
|
if [ "$rundir" != "/etc/rtinst" ]; then
|
|
rm -f $rundir/rtsetup
|
|
fi
|