#!/usr/bin/env sh #--------[ FAKE//OS Logging ]--------# export FAKE_LOG="/var/log/fake/fake-os.log" mkdir -p "$(dirname $FAKE_LOG)" #--------[ FAKE//OS System Variables ]--------# export FAKE_PATH=/opt/fakeos # System location #--------[ Check Root ]--------# if [ "$EUID" -ne 0 ]; then export FAKE_SUDO="sudo" export FAKE_BTL="" else export FAKE_SUDO="" export FAKE_BTL="sudo -u admin $SHELL -C" fi #--------[ Input Variables ]--------# VARS=$(echo "$@" | sed -e 's/[^ ]* *//') # ┌───────────────────────────────────────┐ # │ Update │ # └───────────────────────────────────────┘ _fake_update () { echo "" echo "[UPDATE] $(date)" >> $FAKE_LOG echo "" if [ "$(command -v paru)" ]; then CMD="$FAKE_BTL paru --noconfirm -Syyy && $FAKE_BTL paru --noconfirm -Syu" elif [ "$(command -v pacman)" ]; then CMD="$FAKE_SUDO pacman --noconfirm -Syyy && $FAKE_SUDO pacman --noconfirm -Syu" elif [ "$(command -v apt)" ]; then CMD="$FAKE_SUDO apt -y update && $FAKE_SUDO apt -y upgrade" elif [ "$(command -v apk)" ]; then CMD="$FAKE_SUDO apk update && $FAKE_SUDO apk upgrade" elif [ "$(command -v dnf)" ]; then CMD="$FAKE_SUDO dnf -y update && $FAKE_SUDO apt -y upgrade" else CMD="echo '[ERROR] Incompatable System...'"; fi INDEX=1 echo "[FAKE//OS] Update: $CMD" if ! eval "$CMD 2>> $FAKE_LOG"; then while ! eval "$CMD"; do INDEX=$(( INDEX + 1 )) echo "" echo "[ERROR] Retrying: Attempt $INDEX..." done fi echo "[UPDATE] ----> Completed in $INDEX attempt(s)" >> $FAKE_LOG } # ┌───────────────────────────────────────┐ # │ Install │ # └───────────────────────────────────────┘ _fake_install () { echo "" echo "[INSTALL] $@" >> $FAKE_LOG echo "" if [ "$(command -v paru)" ]; then CMD="$FAKE_BTL paru --noconfirm -S $@" elif [ "$(command -v pacman)" ]; then CMD="$FAKE_SUDO pacman --noconfirm -S $@" elif [ "$(command -v apt)" ]; then CMD="$FAKE_SUDO apt -y install $@" elif [ "$(command -v apk)" ]; then CMD="$FAKE_SUDO apk add $@" elif [ "$(command -v dnf)" ]; then CMD="$FAKE_SUDO dnf -y install $@" else CMD="echo '[ERROR] Incompatable System...'"; fi INDEX=1 echo "[FAKE//OS] Install: $@" if ! eval "$CMD 2>> $FAKE_LOG"; then while ! eval "$CMD"; do INDEX=$(( INDEX + 1 )) echo "" echo "[ERROR] Retrying: Attempt $INDEX..." done fi echo "[INSTALL] ----> Completed in $INDEX attempt(s)" >> $FAKE_LOG } # ┌───────────────────────────────────────┐ # │ Remove │ # └───────────────────────────────────────┘ _fake_remove () { echo "" echo "[REMOVE] $@" >> $FAKE_LOG echo "" if [ "$(command -v paru)" ]; then CMD="$FAKE_BTL paru --noconfirm -R $@" elif [ "$(command -v pacman)" ]; then CMD="$FAKE_SUDO pacman --noconfirm -R $@" elif [ "$(command -v apt)" ]; then CMD="$FAKE_SUDO apt -y remove $@" elif [ "$(command -v apk)" ]; then CMD="$FAKE_SUDO apk del $@" elif [ "$(command -v dnf)" ]; then CMD="$FAKE_SUDO dnf -y remove $@" else CMD="echo '[ERROR] Incompatable System...'"; fi INDEX=1 echo "[FAKE//OS] Remove: $@" if ! eval "$CMD 2>> $FAKE_LOG"; then while ! eval "$CMD"; do INDEX=$(( INDEX + 1 )) echo "" echo "[ERROR] Retrying: Attempt $INDEX..." done fi echo "[REMOVE] ----> Completed in $INDEX attempt(s)" >> $FAKE_LOG } # ┌───────────────────────────────────────┐ # │ Search │ # └───────────────────────────────────────┘ _fake_search () { if [ "$(command -v paru)" ]; then CMD="paru -Ss $@" elif [ "$(command -v pacman)" ]; then CMD="pacman -Ss $@" elif [ "$(command -v apt)" ]; then CMD="apt search $@" elif [ "$(command -v apk)" ]; then CMD="apk search $@" elif [ "$(command -v dnf)" ]; then CMD="dnf search $@" else CMD="echo '[ERROR] Incompatable System...'"; fi echo "[FAKE//OS] Search: $@" if ! eval "$CMD 2>> $FAKE_LOG"; then echo "[FAKE//OS] Error: Search failed..." fi } # ┌───────────────────────────────────────┐ # │ Service Daemon │ # └───────────────────────────────────────┘ _fake_start () { #--------[ Start Daemon ] echo "" echo "[START] $@" for SERVICE in $@; do if [ "$(command -v systemctl)" ]; then $FAKE_SUDO systemctl start "$SERVICE" 2>> $FAKE_LOG; fi if [ "$(command -v rc-update)" ]; then $FAKE_SUDO rc-service "$SERVICE" start 2>> $FAKE_LOG; fi done echo "" } _fake_stop () { #---------[ Stop Daemon ] echo "" echo "[STOP] $@" for SERVICE in $@; do if [ "$(command -v systemctl)" ]; then $FAKE_SUDO systemctl start "$SERVICE" 2>> $FAKE_LOG; fi if [ "$(command -v rc-update)" ]; then $FAKE_SUDO rc-service "$SERVICE" start 2>> $FAKE_LOG; fi done echo "" } _fake_restart () { #------[ Restart Daemon ] echo "" echo "[RESTART] $@" for SERVICE in $@; do if [ "$(command -v systemctl)" ]; then $FAKE_SUDO systemctl restart "$SERVICE" 2>> $FAKE_LOG; fi if [ "$(command -v rc-update)" ]; then $FAKE_SUDO rc-service "$SERVICE" restart 2>> $FAKE_LOG; fi done echo "" } _fake_status () { #------[ Status of Daemon ] echo "" echo "[STATUS] $@" for SERVICE in $@; do if [ "$(command -v systemctl)" ]; then systemctl status "$SERVICE" 2>> $FAKE_LOG; fi if [ "$(command -v rc-update)" ]; then rc-service "$SERVICE" status 2>> $FAKE_LOG; fi done echo "" } _fake_enable () { #-------[ Enable Daemon at Startup ] echo "" echo "[ENABLE] $@" for SERVICE in $@; do if [ "$(command -v systemctl)" ]; then $FAKE_SUDO systemctl enable "$SERVICE" 2>> $FAKE_LOG; fi if [ "$(command -v rc-update)" ]; then $FAKE_SUDO rc-update add "$SERVICE" 2>> $FAKE_LOG; fi done echo "" } _fake_disable () { #------[ Disable Daeon at Startup ] echo "" echo "[DISABLE] $@" for SERVICE in $@; do if [ "$(command -v systemctl)" ]; then sudo systemctl disable "$SERVICE" 2>> $FAKE_LOG; fi if [ "$(command -v rc-update)" ]; then sudo rc-update rm "$SERVICE" 2>> $FAKE_LOG; fi done echo "" } # ┌───────────────────────────────────────┐ # │ Other Functions │ # └───────────────────────────────────────┘ _fake_flush () { #--------[ Flush System Cache ] echo "" sudo -u root $ENV_SHELL -c "sync; echo 3 > /proc/sys/vm/drop_caches" echo "" } _fake_upgrade () { echo "" echo "[FAKE//OS] Upgrading to latest Git version..." echo "[FAKE//OS] Upgraded: $(date)" $FAKE_SUDO curl https://fake.onl/fake-os.sh | sh echo "" echo "Restart shell/terminal to take effect." echo "" } # ┌───────────────────────────────────────┐ # │ Help Screen │ # └───────────────────────────────────────┘ _fake_help () { echo "" echo "FAKE//OS" echo "-----------------------------------" echo "usage: fake " echo "" echo "Package management commands:" echo " install Install new software packages" echo " update Update installed software packages" echo " remove Remove/Uninstall software packages" echo " search Search repository for software packages" echo "" echo "Init/System management commands" echo " start Start system daemons" echo " stop Stop system daemons" echo " restart Restart system daemons" echo " status Show status of daemons" echo " enable Add system daemons to default startup PID" echo " disable Remove system daemons from default startup PID" echo " flush Clear system caches" echo "" echo "FAKE//OS commands:" echo " upgrade Upgrade FAKE//OS to latest git version" echo " help Display this help screen" echo "" } # ┌───────────────────────────────────────┐ # │ Main Entry Point │ # └───────────────────────────────────────┘ #--------[ Package Management ]--------# if [ "$1" == "update" ]; then _fake_update elif [ "$1" == "install" ]; then _fake_install "$VARS" elif [ "$1" == "remove" ]; then _fake_remove "$VARS" elif [ "$1" == "search" ]; then _fake_search "$VARS" #--------[ Service Daemon Management ]--------# elif [ "$1" == "start" ]; then _fake_start "$VARS" elif [ "$1" == "stop" ]; then _fake_stop "$VARS" elif [ "$1" == "restart" ]; then _fake_restart "$VARS" elif [ "$1" == "status" ]; then _fake_status "$VARS" elif [ "$1" == "enable" ]; then _fake_enable "$VARS" elif [ "$1" == "disable" ]; then _fake_disable "$VARS" #--------[ Other Commands ]--------# elif [ "$1" == "flush" ]; then _fake_flush elif [ "$1" == "upgrade" ]; then _fake_upgrade elif [ "$1" == "help" ]; then _fake_help #--------[ Error Catching ]--------# else echo "" echo "[ERROR] Command '$1' not recognised."; echo "" fi