1
0
Fork 0
fs25save/downloadSaves.ps1

53 lines
2.3 KiB
PowerShell

param (
[string]$destinationFolder = "../savegame2",
[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 "Копирование завершено."