FE2TY/FE2TY-CLI
2025-05-12 02:30:41 +02:00

190 lines
6.3 KiB
Bash
Executable file

#!/bin/bash
if [ "$EUID" -ne 0 ]
then echo "run FE2TY using admin perms."
exit
fi
if [ ! -f /bin/git ]
then echo "install git before running."
exit
fi
if [ ! -f /bin/jq ]
then echo "install jq before running."
exit
fi
# By RSCC
## Unlicense
main() {
case "$1" in
i) ty.install ;;
r) ty.revert ;;
*) printf "usage:\nFE2TY i - install TyrianOS\nFE2TY r - uninstall TyrianOS and revert to old deployment\n" ;;
esac
}
ty.install() {
read -rp "by pressing enter, you agree that this tool is not considered an official tool to install TyrianOS and should only be used as a last resort from an existing Fedora installation. therefore, the creators of this script have absolutely no responsibility in the case of something happening, as it is very experimental. press [ENTER] to agree, spam [CTRL] + [C] to quit."
limsg s 1 i "Getting current deployment origin ref and backing up..."
rpm-ostree status --booted --json | jq -r '.deployments[] | select(.booted) | ."container-image-reference"' > /etc/FE2TY-BURR.txt || limsg.quit s 1 e "Command failed. Do you have permission to write to /etc/ ?"
limsg s 2 i "Cloning to temporary directory..."
cd "$HOME" || exit 1
mkdir -v "$HOME"/87F9W3845GFG5R894OSEG || true
pushd "$HOME"/87F9W3845GFG5R894OSEG || exit 1
git clone https://github.com/Icycoide/TyrianOS || limsg.quit s 2 e "Failed to clone"
pushd TyrianOS/ || exit
limsg s 2 i "Installing skeleton to all users..."
cp -vr system_files/etc/skel/* /var/home/*/
limsg s 2 i "Installing skeleton to all users (hidden)..."
cp -vr system_files/etc/skel/.* /var/home/*/
popd || exit 1
popd || exit 1
limsg s 2 i "Removing temporary directory again..."
rm -rv 87F9W3845GFG5R894OSEG
limsg s 3 i "Switching OS base..."
rpm-ostree rebase ostree-unverified-registry:ghcr.io/icycoide/tyrianos:latest
limsg s 4 i "Calling to reboot..."
pkexec reboot
}
ty.revert() {
limsg s 1 i "Looking for backed up remote reference file..."
cat /etc/FE2TY-BURR.txt || limsg.quit s 1 e "The backed up ref could not be found."
# shellcheck disable=SC2155
export REF_BACKUP=$(cat /etc/FE2TY-BURR.txt)
limsg s 2 i "Attempting rebase..."
rpm-ostree rebase "$REF_BACKUP" || limsg.quit s 2 e "Could not rebase back to original ref"
limsg s 3 i "Force deploying image..."
ostree admin deploy "$REF_BACKUP" || limsg s 3 w "Unable to force the deployment of the original ref, but it might still have succeeded regardless."
read -pr "Press [ENTER] to reboot, [CTRL] + [C] to abort. We're done from here."
reboot
}
function installer.colours() {
# Reset
Color_Off='\033[0m' # Text Reset
# Regular Colors
export Black='\033[0;30m' # Black
export Red='\033[0;31m' # Red
export Green='\033[0;32m' # Green
export Yellow='\033[0;33m' # Yellow
export Blue='\033[0;34m' # Blue
export Purple='\033[0;35m' # Purple
export Cyan='\033[0;36m' # Cyan
export White='\033[0;37m' # White
# Bold
export BBlack='\033[1;30m' # Black
export BRed='\033[1;31m' # Red
export BGreen='\033[1;32m' # Green
export BYellow='\033[1;33m' # Yellow
export BBlue='\033[1;34m' # Blue
export BPurple='\033[1;35m' # Purple
export BCyan='\033[1;36m' # Cyan
export BWhite='\033[1;37m' # White
# Underline
export UBlack='\033[4;30m' # Black
export URed='\033[4;31m' # Red
export UGreen='\033[4;32m' # Green
export UYellow='\033[4;33m' # Yellow
export UBlue='\033[4;34m' # Blue
export UPurple='\033[4;35m' # Purple
export UCyan='\033[4;36m' # Cyan
export UWhite='\033[4;37m' # White
# Background
export On_Black='\033[40m' # Black
export On_Red='\033[41m' # Red
export On_Green='\033[42m' # Green
export On_Yellow='\033[43m' # Yellow
export On_Blue='\033[44m' # Blue
export On_Purple='\033[45m' # Purple
export On_Cyan='\033[46m' # Cyan
export On_White='\033[47m' # White
# High Intensity
export IBlack='\033[0;90m' # Black
export IRed='\033[0;91m' # Red
export IGreen='\033[0;92m' # Green
export IYellow='\033[0;93m' # Yellow
export IBlue='\033[0;94m' # Blue
export IPurple='\033[0;95m' # Purple
export ICyan='\033[0;96m' # Cyan
export IWhite='\033[0;97m' # White
# Bold High Intensity
export BIBlack='\033[1;90m' # Black
export BIRed='\033[1;91m' # Red
export BIGreen='\033[1;92m' # Green
export BIYellow='\033[1;93m' # Yellow
export BIBlue='\033[1;94m' # Blue
export BIPurple='\033[1;95m' # Purple
export BICyan='\033[1;96m' # Cyan
export BIWhite='\033[1;97m' # White
# High Intensity backgrounds
export On_IBlack='\033[0;100m' # Black
export On_IRed='\033[0;101m' # Red
export On_IGreen='\033[0;102m' # Green
export On_IYellow='\033[0;103m' # Yellow
export On_IBlue='\033[0;104m' # Blue
export On_IPurple='\033[0;105m' # Purple
export On_ICyan='\033[0;106m' # Cyan
export On_IWhite='\033[0;107m' # White
echo -e "${Purple}[i] The colour variables have been set.${Color_Off}"
}
limsg() {
export CHECKUSERINPUT
case $1 in
s)
lmsg_one="STAGE"
;;
esac
lmsg_two=$2
case $3 in
i)
lmsg_three="${BBlue}INFO"
;;
w)
lmsg_three="${BYellow}WARN"
;;
e)
lmsg_three="${BRed}ERRR"
;;
*)
lmsg_three=$3
;;
esac
echo -e "[FE2TY(LiMSG)/${BCyan}${lmsg_one} ${lmsg_two}${Color_Off}/${lmsg_three}${Color_Off}]: $4"
export ADD
}
limsg.quit() {
case $1 in
s)
lmsg_one="STAGE"
;;
esac
lmsg_two=$2
case $3 in
e)
lmsg_three="${BRed}ERRR"
;;
*)
lmsg_three=$3
;;
esac
echo -e "[FE2TY(LiMSG)/${BCyan}${lmsg_one} ${lmsg_two}${Color_Off}/${lmsg_three}${Color_Off}]: $4 | QUIT!"
exit 1
}
installer.colours
main "$1"