param (
    [string]$destinationFolder = "../savegame4",
    [string]$branch = "master"  # Параметр для ветки, по умолчанию 'master'
)

# Получаем путь к текущей папке (папка скрипта)
$scriptFolder = Split-Path $MyInvocation.MyCommand.Path -Parent

# Убедимся, что папка назначения существует, если нет — создаем её
if (-not (Test-Path -Path $destinationFolder)) {
    New-Item -Path $destinationFolder -ItemType Directory
}

# Переходим в папку скрипта (если это репозиторий Git)
Set-Location -Path $scriptFolder

# Получаем текущую ветку
$currentBranch = git rev-parse --abbrev-ref HEAD

# Пуллим изменения только если мы не на нужной ветке
if ($currentBranch -ne $branch) {
    Write-Host "Переключение на ветку '$branch'..."
    git checkout $branch
}

# Пуллим последние изменения из удаленного репозитория для указанной ветки
Write-Host "Пуллинг изменений из ветки '$branch'..."
git pull origin $branch

# Получаем все файлы и папки в текущей папке, исключая .git, downloadSaves.ps1 и uploadSaves.ps1
$filesToCopy = Get-ChildItem -Path $scriptFolder -Recurse | Where-Object {
    $_.FullName -notmatch '\\\.git' -and
    $_.Name -ne 'downloadSaves.ps1' -and
    $_.Name -ne 'uploadSaves.ps1'
}

# Копируем файлы в папку назначения
foreach ($file in $filesToCopy) {
    # Если это папка, создаем такую же структуру в папке назначения
    if ($file.PSIsContainer) {
        $destinationPath = $file.FullName.Replace($scriptFolder, $destinationFolder)
        if (-not (Test-Path -Path $destinationPath)) {
            New-Item -Path $destinationPath -ItemType Directory
        }
    } else {
        # Если это файл, копируем в папку назначения
        $destinationFile = $file.FullName.Replace($scriptFolder, $destinationFolder)
        Copy-Item -Path $file.FullName -Destination $destinationFile
    }
}

Write-Host "Копирование завершено."
