diff --git a/rave b/rave new file mode 100644 index 0000000..f76efa2 --- /dev/null +++ b/rave @@ -0,0 +1,307 @@ +#!/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 + su - $USER -c "flatpak update -y" + su - $USER -c "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 \ No newline at end of file