Files
serverconfig/libs/common.sh

105 lines
2.5 KiB
Bash

#!/bin/bash
FILENAME="serverconfig"
ETC_DIR="/etc/$FILENAME"
ENV_FILE="$ETC_DIR/.env"
LOG="/var/log/$FILENAME.log"
SCRIPT_FILE="/usr/local/bin"
INFO="\e[34mINFO\e[0m"
SUCCESS="\e[32mSUCCESS\e[0m"
WARN="\e[33mWARN\e[0m"
ERROR="\e[31mERROR\e[0m"
DEBUG="\e[35mDEBUG\e[0m"
ACTION="\e[36mACTION\e[0m"
INFO_FLAG=1
WARN_FLAG=2
ERROR_FLAG=3
DEBUG_FLAG=4
ACTION_FLAG=5
SUCCESS_FLAG=6
DATETIME_FORMAT="%d-%m-%Y %H:%M:%S"
info_print() {
local message="$1"
local level="${2:-1}"
local write_log="${3:-true}"
case $level in
1|--) local level=$INFO;;
2) local level=$WARN;;
3) local level=$ERROR;;
4) local level=$DEBUG;;
5) local level=$ACTION;;
6) local level=$SUCCESS;;
*);;
esac
local output="[$(date +"$DATETIME_FORMAT")] - $level: $message"
if [ "$write_log" = true ]; then echo -e "$output" | tee -a "$LOG"
else echo -e "$output"
fi
}
create_env_variable() {
local key="$1"
local value="$2"
local file="${3:-$ENV_FILE}"
local isUpdated="${4:-true}"
if [[ "$file" == '--' ]]; then
file=$ENV_FILE
fi
if [[ -z "$value" && "$isUpdated" == true ]]; then
if grep -q "^$key=*" "$file" 2>/dev/null; then
info_print "$key not updated." $WARN_FLAG
return
else
info_print "$key not set (empty input)." $WARN_FLAG
return
fi
fi
if [[ "$isUpdated" == true ]]; then
if grep -Eq "^${key}=" "$file" 2>/dev/null; then
read -p "$key already set, overwrite? (y/N): " yn
case "$yn" in
[Yy]*)
sed -i "s/^$key=.*/$key=$value/" "$file"
info_print "$key updated." $SUCCESS_FLAG
;;
*)
info_print "$key not changed." $WARN_FLAG
;;
esac
else
echo "$key=$value" >> "$file"
info_print "$key set." $SUCCESS_FLAG
fi
else
if grep -Eq "^${key}=" "$file" 2>/dev/null; then
sed -i "s/^$key=.*/$key=$value/" "$file"
else
echo "$key=$value" >> "$file"
fi
fi
}
create_raw_line_variable() {
local line="$1"
local file="$2"
if grep -Fxq "$line" "$file" 2>/dev/null; then
info_print "'$line' already defined as raw line." $WARN_FLAG
else
echo "$line" >> "$file"
info_print "'$line' added as raw line." $SUCCESS_FLAG
fi
}