mirror of
https://git.oldgate.org/OGS/Gitea-Blurple.git
synced 2025-05-23 09:23:59 -04:00
84 lines
2.7 KiB
Bash
84 lines
2.7 KiB
Bash
#!/bin/bash
|
|
|
|
log_message() {
|
|
local level=$1
|
|
local message=$2
|
|
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
|
|
echo "[$timestamp] [$level] $message" >> /var/log/gitea_blurple.log
|
|
}
|
|
|
|
handle_error() {
|
|
local message=$1
|
|
local level=${2:-"ERROR"}
|
|
log_message "$level" "$message"
|
|
echo "Error: $message" >&2
|
|
exit 1
|
|
}
|
|
|
|
clone_repository() {
|
|
local retries=3
|
|
local attempt=1
|
|
until git clone https://git.oldgate.org/OGS/Gitea-Blurple.git; do
|
|
((attempt++))
|
|
if [ $attempt -gt $retries ]; then
|
|
handle_error "Failed to clone repository after $retries attempts"
|
|
fi
|
|
log_message "WARNING" "Failed to clone repository, retrying... (Attempt $attempt)"
|
|
sleep 5
|
|
done
|
|
}
|
|
|
|
backup_file() {
|
|
local file=$1
|
|
if [ -e "$file" ]; then
|
|
cp "$file" "$file.bak" || handle_error "Failed to backup $file"
|
|
log_message "INFO" "Backup created for $file"
|
|
else
|
|
log_message "WARNING" "File $file does not exist, skipping backup"
|
|
fi
|
|
}
|
|
|
|
append_to_file() {
|
|
local content=$1
|
|
local file=$2
|
|
echo "$content" >> "$file" || handle_error "Failed to append content to $file"
|
|
}
|
|
|
|
main() {
|
|
local repository_dir="Gitea-Blurple"
|
|
local gitea_service="gitea"
|
|
local gitea_config="/etc/gitea/app.ini"
|
|
local custom_dir="/var/lib/gitea/custom"
|
|
local custom_public_dir="$custom_dir/public"
|
|
|
|
cd /tmp || handle_error "Failed to change directory to /tmp"
|
|
clone_repository || handle_error "Failed to clone repository"
|
|
|
|
sudo systemctl stop "$gitea_service" || handle_error "Failed to stop Gitea service"
|
|
|
|
backup_file "$custom_public_dir"
|
|
|
|
sudo cp -r "$repository_dir/public/" "$custom_public_dir" || handle_error "Failed to copy new custom/public directory"
|
|
|
|
sudo chown -R git:git "$custom_dir" || handle_error "Failed to set ownership"
|
|
sudo chmod -R 750 "$custom_dir" || handle_error "Failed to set permissions"
|
|
|
|
if grep -q "\[ui\]" "$gitea_config"; then
|
|
sudo systemctl restart "$gitea_service" || handle_error "Failed to restart Gitea service"
|
|
else
|
|
backup_file "$gitea_config"
|
|
append_to_file "$(cat "$repository_dir/templates/app.ini")" "$gitea_config"
|
|
sudo chown root:git "$gitea_config" || handle_error "Failed to set ownership for app.ini"
|
|
sudo chmod 770 "$gitea_config" || handle_error "Failed to set permissions for app.ini"
|
|
sudo systemctl restart "$gitea_service" || handle_error "Failed to restart Gitea service"
|
|
fi
|
|
|
|
echo -e "=================================================================="
|
|
echo "Clear your cache for the changes to appear"
|
|
echo -e "=================================================================="
|
|
|
|
log_message "INFO" "Script execution completed successfully"
|
|
}
|
|
|
|
main
|