Created
November 30, 2019 09:21
-
-
Save autos/a0aeb4e15218bb7308e59eb89ab85b6c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
###################################################################### | |
# | |
# Copyright (c) 2015 arakasi72 (https://via.hypothes.is/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=$(basename "$(git ls-remote --tags https://via.hypothes.is/https://github.com/arakasi72/rtinst.git | grep -o 'refs/tags/v.*' | sort -V | tail -1)") | |
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://via.hypothes.is/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://via.hypothes.is/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://via.hypothes.is/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://via.hypothes.is/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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment