#!/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= - 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 sudo flatpak update -y sudo flatpak uninstall --unused -y hblock 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