261 lines
10 KiB
Bash
261 lines
10 KiB
Bash
#!/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 <command> <arguments>"
|
|
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
|