306 lines
		
	
	
	
		
			7.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			306 lines
		
	
	
	
		
			7.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| # Text modifiers
 | |
| bold=$(tput bold)      # ${bold}
 | |
| normal=$(tput sgr0)    # ${normal}
 | |
| yellow=$(tput setaf 3) # ${yellow}
 | |
| 
 | |
| # RaveOS update wrapper using nala/flatpak
 | |
| # (c) AlexC
 | |
| 
 | |
| appver="0.1-alpha"
 | |
| CALLCOMMAND="rave"
 | |
| 
 | |
| #functions
 | |
| function help() {
 | |
| 	echo "USAGE:"
 | |
| 	echo "	$CALLCOMMAND [option] [options for the option]"
 | |
| 	echo "	EXAMPLE: $CALLCOMMAND search qemu"
 | |
| 	echo "AVAILABLE OPTIONS:"
 | |
| 	echo "	init - Setup environment and install all dependencies"
 | |
| 	echo "	install - install a package."
 | |
| 	echo "	install-local - install local packages."
 | |
| 	echo "	remove - uninstall a package."
 | |
| 	echo "	purge - uninstall a package along with its configuration files."
 | |
| 	echo "	search - search a package."
 | |
| 	echo "	find - 'apt-file search'."
 | |
| 	echo "	update - apt update"
 | |
| 	echo "	upgrade - apt upgrade"
 | |
| 	echo "	full-upgrade - update + upgrade + clean + flatpak update"
 | |
| 	echo "	autoclean - clean up apt caches."
 | |
| 	echo "	clean - same as 'autoclean'."
 | |
| 	echo "	autoremove - remove packages that are no longer needed."
 | |
| 	echo "	show - show the information of a package that is installed."
 | |
| 	echo "	list-installed - list all installed packages."
 | |
| 	echo "	help - show this help."
 | |
| 	echo "	install-flatpak - Install a flatpak package"
 | |
| 	echo "	search-flatpak - Search a flatpak package"
 | |
| 	echo "	update-flatpak - Update flatpak packages"
 | |
| 	echo "	remove-flatpak - Remove flatpak packages"
 | |
| 	echo "	version - show version and about information."
 | |
| 	echo "SETTINGS:"
 | |
| 	echo "	--learning-mode=<on|off> - accepts 'on' or 'off' as values. turns learning mode on or off."
 | |
| 	echo "You can also use the environment variable 'RAVE_LEARN' to toggle learning mode: if it equals 1, learning mode is on."
 | |
| 	echo " "
 | |
| 	echo -e "\e[1mIf you don't supply any option, the help and about will be printed.\e[0m"
 | |
| }
 | |
| function about() {
 | |
| 	echo "      RAVE      "
 | |
| 	echo "  ==============  "
 | |
| 	echo "A simple wrapper for nala/apt/flatpak with a syntax similar to apt for ease of use."
 | |
| 	echo -e "Version: $appver\n"
 | |
| 	echo "License: MIT"
 | |
| 	echo "Copyright (c) 2023 AlexC"
 | |
| }
 | |
| 
 | |
| function config() {
 | |
| #	SAVE:
 | |
| #	$1=save
 | |
| #	$2=setting to add to config
 | |
| #	$3=optional text to printed
 | |
| #	DELETE:
 | |
| #	$1=delete
 | |
| #	$2=setting to delete
 | |
| #	$3=optional text to print.
 | |
| #	LOAD:
 | |
| #	$1=load
 | |
| #	$2=setting to load
 | |
| #	$3=setting name when loading
 | |
| #
 | |
| 	local DIR="$(pwd)"
 | |
| 	if [[ ! -d "${HOME}/.config/rave/" ]]; then
 | |
| 		mkdir -p "${HOME}/.config/rave/"
 | |
| 	fi
 | |
| 	local CONF="${HOME}/.config/rave/"
 | |
| 	cd "$CONF"
 | |
| 	if [[ ! -f config ]]; then
 | |
| 		touch config
 | |
| 	fi
 | |
| 	if [[ "$1" == "save" ]]; then
 | |
| 		echo "$2" >> config
 | |
| 		if [[ ! -z "$3" ]]; then
 | |
| 			echo -e "$3"
 | |
| 		fi
 | |
| 	elif [[ "$1" == "delete" ]]; then
 | |
| 		sed -i "/$2/d" config
 | |
| 		if [[ ! -z "$3" ]]; then
 | |
| 			echo -e "$3"
 | |
| 		fi
 | |
| 	elif [[ "$1" == "load" ]]; then
 | |
| 		if cat config | grep $2 >/dev/null ; then
 | |
| 			SETTING=$3
 | |
| 		else
 | |
| 			echo -e "\e[31m\e[1mERROR: \e[0m\e[31mfailed to find requested setting!\e[0m"
 | |
| 			exit 1
 | |
| 		fi
 | |
| 	elif [[ "$1" == "load-all" ]]; then
 | |
| 		SETTING="$(cat config)"
 | |
| 	elif [[ "$1" == "delete-all" ]]; then
 | |
| 		echo -n "" > config
 | |
| 	fi
 | |
| 	cd "$DIR"
 | |
| }
 | |
| 
 | |
| if [[ "$1" == '' ]]; then
 | |
| 	echo -e "\e[31m\e[1mERROR:\e[0m\e[31m no operation specified!\e[0m"
 | |
| 	echo -e "\e[1mrun \"$CALLCOMMAND --help\" for help\e[0m"
 | |
| 	exit 0
 | |
| fi
 | |
| if [[ "$RAVE_LEARN" == 1 ]]; then
 | |
| 	LEARN=1
 | |
| fi
 | |
| while [[ "$1" != '' ]]; do
 | |
| 	config load-all
 | |
| 	case $SETTING in
 | |
| 		learn)
 | |
| 			LEARN=1
 | |
| 		;;
 | |
| 	esac
 | |
| 	case ${1,,} in
 | |
| 		--learning-mode*)
 | |
| 			MODE=$(echo $1 | sed -e 's/^[^=]*=//g')
 | |
| 			if [[ "$MODE" == "on" ]]; then
 | |
| 				config save "learn"
 | |
| 				echo -e "learning mode on"
 | |
| 			elif [[ "$MODE" == "off" ]]; then
 | |
| 				config delete "learn"
 | |
| 				echo "learning mode off"
 | |
| 			else
 | |
| 				echo -e "\e[31m\e[1mERROR:\e[0m\e[31m Invalid option '$MODE' for option '--learning-mode'!\e[0m"
 | |
| 			fi
 | |
| 			shift
 | |
| 		;;
 | |
| 		--config)
 | |
| 			case $2 in
 | |
| 				clear)
 | |
| 					config delete-all || exit 1
 | |
| 					echo "configuration cleared succesfully!"
 | |
| 					break
 | |
| 				;;
 | |
| 				*)
 | |
| 				echo -e "\e[31m\e[1mERROR:\e[0m\e[31m Invalid option '$MODE' for option '--config'!\e[0m"
 | |
| 				break
 | |
| 				;;
 | |
| 			esac
 | |
| 			shift
 | |
| 		;;
 | |
| 		install)
 | |
| 			shift
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1msudo nala install \"$@\"\e[0m"
 | |
| 			fi
 | |
| 			sudo nala install "$@"
 | |
| 			break
 | |
| 		;;
 | |
| 		install-local)
 | |
| 			shift
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is \e[1msudo dpkg -i \"$@\"\e[0m"
 | |
| 			fi
 | |
| 			sudo dpkg -i "$@"
 | |
| 			break
 | |
| 		;;
 | |
| 		remove)
 | |
| 			shift
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1msudo nala remove \"$@\"\e[0m"
 | |
| 			fi
 | |
| 			sudo nala remove "$@"
 | |
| 			break
 | |
| 		;;
 | |
| 		purge)
 | |
| 			shift
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1msudo apt purge \"$@\"\e[0m"
 | |
| 			fi
 | |
| 			sudo apt purge "$@"
 | |
| 			break
 | |
| 		;;
 | |
| 		search)
 | |
| 			shift
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1mapt search \"$@\"\e[0m"
 | |
| 			fi
 | |
| 			apt search "$@"
 | |
| 			break
 | |
| 		;;
 | |
| 		find)
 | |
| 			shift
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1msudo apt-file search \"$@\"\e[0m"
 | |
| 			fi
 | |
| 			sudo apt-file search "$@"
 | |
| 			break
 | |
| 		;;
 | |
| 		update)
 | |
| 			if [[ $LEARN == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1mapt update\e[0m"
 | |
| 			fi
 | |
| 			sudo nala update
 | |
| 			break
 | |
| 		;;
 | |
| 		upgrade)
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1msudo pacman -Su\e[0m"
 | |
| 			fi
 | |
| 			sudo nala upgrade
 | |
| 			break
 | |
| 		;;
 | |
| 		full-upgrade)
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "Performing full system upgrade"
 | |
| 			fi
 | |
| 			yay -Syyu --noconfirm
 | |
| 			sudo pacman -Rns $(pacman -Qtdq) --noconfirm
 | |
| 			sudo pacman -Sc --noconfirm
 | |
| 			flatpak update -y
 | |
| 			flatpak uninstall --unused -y
 | |
| 			hblock
 | |
| 			sudo curl -Ls https://git.rp1.hu/RP1/RaveOS-arch/raw/branch/main/rave -o /usr/local/bin/rave 2>/dev/null
 | |
| 			echo ${bold}${yellow}RaveOS Gaming Linux fully updated!${normal}
 | |
| 			break
 | |
| 		;;
 | |
| 		autoclean|clean)
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1mapt autoclean\e[0m"
 | |
| 			fi
 | |
| 			sudo apt autoclean
 | |
| 			break
 | |
| 		;;
 | |
| 		autoremove)
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1msudo apt autoremove \"$@\"\e[0m"
 | |
| 			fi
 | |
| 			sudo apt autoremove
 | |
| 			break
 | |
| 		;;
 | |
| 		list-installed)
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1mapt list --installed\e[0m"
 | |
| 			fi
 | |
| 			sudo apt list --installed
 | |
| 			break
 | |
| 		;;
 | |
| 		show)
 | |
| 			shift
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1msudo apt show \"$@\"\e[0m"
 | |
| 			fi
 | |
| 			sudo apt show "$@"
 | |
| 			break
 | |
| 		;;
 | |
| 		install-flatpak)
 | |
| 			shift
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1mflatpak install \"$@\"\e[0m"
 | |
| 			fi
 | |
| 			flatpak install "$@"
 | |
| 			break
 | |
| 		;;
 | |
| 		update-flatpak)
 | |
| 			shift
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1mflatpak update \e[0m"
 | |
| 			fi
 | |
| 			flatpak update
 | |
| 			break
 | |
| 		;;
 | |
| 		remove-flatpak)
 | |
| 			shift
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1mflatpak remove \"$@\"\e[0m"
 | |
| 			fi
 | |
| 			flatpak remove "$@"
 | |
| 			break
 | |
| 		;;
 | |
| 		search-flatpak)
 | |
| 			shift
 | |
| 			if [[ "$LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1mflatpak search \"$@\"\e[0m"
 | |
| 			fi
 | |
| 			flatpak search "$@"
 | |
| 			break
 | |
| 		;;
 | |
| 		init)
 | |
| 			shift
 | |
| 			if [[ "LEARN" == 1 ]]; then
 | |
| 				echo -e "The command being run is: \e[1mrave init\e[0m"
 | |
| 			fi
 | |
| 			sudo apt install nala flatpak -y
 | |
| 			flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
 | |
| 			break
 | |
| 		;;
 | |
| 		help|-h|--help|-help)
 | |
| 			help
 | |
| 			exit 0
 | |
| 		;;
 | |
| 		version|-v|--version)
 | |
|             about
 | |
|             exit 0
 | |
|         ;;
 | |
|         *)
 | |
|             echo -e "\e[1m\e[31minvalid option \"$1\"!\e[0m"
 | |
|             exit 0
 | |
| 	esac
 | |
| 	#shift
 | |
| done
 |