Files
serverconfig/install.sh
2025-07-30 14:46:42 +02:00

98 lines
2.7 KiB
Bash

#!/bin/bash
source ./scripts/common.sh
mkdir -p $ETC_DIR
rm -f $LOG
ISERROR=false
INSTALLED_DEP=( $(grep -v '^#' $(pwd)/requirements.txt) )
if [[ $EUID -ne 0 ]]; then
echo "The script needs to run as root."
exit 1
fi
touch "$LOG" || ISERROR=true
if $ISERROR; then
info_print "Failed to Create $LOG" 3 false; exit 1
fi
chmod 644 "$LOG"
info_print "\n\
==================================================\n\
ServerConfig Installation v1.0.0\n\
--------------------------------------------------"
info_print "License : MIT"
info_print "Repository : https://github.com/guezoloic/serverconfig"
info_print "Date : Installation $(date '+%Y-%m-%d %H:%M:%S')"
if $ISERROR; then
info_print "Failed to move some scripts to $SCRIPT_FILE, See log $LOG" 3 false; exit 1
fi
info_print "\n\
==================================================\n\
Installing config files to $ETC_DIR\n\
--------------------------------------------------" -- false
for config in config/*; do
filename=$(basename "$config")
info_print "Moving $filename to $SCRIPT_FILE"
install $argument "$config" "$ETC_DIR/$filename" -Dm755 \
&& { info_print "$ETC_DIR/$filename installed." 6; } \
|| { info_print "$ETC_DIR/$filename failed." 3; ISERROR=true; }
done
if $ISERROR; then
info_print "Failed to move some scripts to $ENV_FILE, See log $LOG" 3 false; exit 1
fi
info_print "\n\
==================================================\n\
Checking dependencies \n\
--------------------------------------------------" -- false
for dep in ${INSTALLED_DEP[@]}; do
if command -v "$dep" &>/dev/null; then
info_print "$dep is installed." 6
else
info_print "$dep is not installed." 3
ISERROR=true
fi
done
if $ISERROR; then
info_print "Some Dependencies are missing. Please check requirements.txt." 3 false; exit 1
fi
info_print "\n\
==================================================\n\
Installing scripts to $SCRIPT_FILE \n\
--------------------------------------------------" -- false
for scripts in scripts/*.sh; do
filename=$(basename "$scripts")
info_print "Moving $filename to $SCRIPT_FILE"
install $argument "$scripts" "$SCRIPT_FILE/$filename" -Dm755 \
&& { info_print "$SCRIPT_FILE/$filename installed." 6; } \
|| { info_print "$SCRIPT_FILE/$filename failed." 3; ISERROR=true; }
done
for element in $SCRIPT_FILE/*.sh; do
bash "$element" --install
done
info_print "\n\
==================================================\n\
Installation Complete\n\
--------------------------------------------------" -- false
info_print "All config files are in $ETC_DIR"
info_print "All scripts are in $SCRIPT_FILE"
echo "Log file written at: $LOG"