#!/bin/bash

dotnet_version='net6.0'
salimax_ip="$1"
username='ie-entwicklung'
root_password='Salimax4x25'
set -e

# Define directories and configurations
DEST_DIR="/home/$username/salimax/SaliMax"  # Path to the specific file
BACKUP_ROOT="/home/$username/salimax/salimax_backup"  # Base backup directory
TIMESTAMP=$(date +'%Y%m%d_%H%M%S')
BACKUP_DIR="${BACKUP_ROOT}/script_backup_${TIMESTAMP}"  
# Backup directory with unique name
MAX_BACKUPS=5  # Limit to 5 backups

echo -e "\n============================ Build ============================\n"

# Build the project
dotnet publish \
    ./SaliMax.csproj \
    -p:PublishTrimmed=false \
    -c Release \
    -r linux-x64

echo -e "\n============================ Backup Old SaliMax File ============================\n"

# SSH into the remote machine and create the backup directory
ssh $username@$salimax_ip "mkdir -p $BACKUP_DIR"

# Move the 'SaliMax' file to the backup folder on the remote machine
ssh $username@$salimax_ip "rsync -av --exclude='${BACKUP_ROOT}/script_backup_*' --exclude='salimax_backup/*' $DEST_DIR $BACKUP_DIR/"

echo -e "\n============================ Cleanup Old Backups ============================\n"

# Cleanup old backups if the total number exceeds the maximum allowed
echo "Existing backups:"
ssh $username@$salimax_ip "ls -1d ${BACKUP_ROOT}/script_backup_* 2>/dev/null"

# Count the backups created by this script
BACKUP_COUNT=$(ssh $username@$salimax_ip "ls -1d ${BACKUP_ROOT}/script_backup_* 2>/dev/null | wc -l")
echo "Current number of backups: $BACKUP_COUNT"

if [ "$BACKUP_COUNT" -gt "$MAX_BACKUPS" ]; then
    # Find and delete the oldest backup created by the script
    OLD_BACKUP=$(ssh $username@$salimax_ip "find ${BACKUP_ROOT} -type d -name 'script_backup_*' | sort | head -n 1")
    echo "Old backup to delete: $OLD_BACKUP"

    if [ -n "$OLD_BACKUP" ]; then
        echo "Backup limit reached. Deleting old backup: $OLD_BACKUP"
        ssh $username@$salimax_ip "rm -rf $OLD_BACKUP" && echo "Deleted: $OLD_BACKUP" || echo "Failed to delete: $OLD_BACKUP"
    else
        echo "No valid backups to delete."
    fi
else
    echo "Backup limit not reached. Current number of backups: $BACKUP_COUNT"
fi


echo -e "\n============================ Deploy ============================\n"

# Deploy new files to the remote destination
rsync -v \
    --exclude '*.pdb' \
    ./bin/Release/$dotnet_version/linux-x64/publish/* \
    $username@"$salimax_ip":~/salimax

echo -e "\nDeployment complete!\n"


#echo -e "\n============================ Execute ============================\n" 

#sshpass -p "$root_password" ssh -o StrictHostKeyChecking=no -t "$username"@"$salimax_ip" "echo '$root_password' | sudo -S sh -c 'cd salimax && ./restart'" 2>/dev/null