From ef2b9e2a94dfb8989a6ced47124b5478eeec74be Mon Sep 17 00:00:00 2001 From: sandrews Date: Mon, 15 Sep 2025 12:26:24 -0500 Subject: [PATCH] Refactor Update-Scripts function to simplify directory extraction and file copying logic --- 1_Install.ps1 | 22 +++++----------------- 2_ConfigUpdate.ps1 | 22 +++++----------------- 3_ConfigAfterNextcloud.ps1 | 22 +++++----------------- 3 files changed, 15 insertions(+), 51 deletions(-) diff --git a/1_Install.ps1 b/1_Install.ps1 index f1154f9..fbc3b48 100644 --- a/1_Install.ps1 +++ b/1_Install.ps1 @@ -67,27 +67,15 @@ function Update-Scripts { Write-Host "Extracting update package..." -ForegroundColor Cyan Expand-Archive -Path $zipPath -DestinationPath $tempDir -Force - # Find the extracted directory - usually named like "windows-install-master" - $extractedDir = Get-ChildItem -Path $tempDir -Directory | Select-Object -First 1 + # Based on our analysis, the zip extracts to a "windows-install" directory + $extractedDir = Get-ChildItem -Path $tempDir -Directory | Where-Object { $_.Name -eq "windows-install" } | Select-Object -First 1 if (($extractedDir) -and ((Test-Path $extractedDir.FullName))) { # Copy all files except .git directory to current location - Write-Host "Installing updates..." -ForegroundColor Cyan + Write-Host "Installing updates from $($extractedDir.FullName)..." -ForegroundColor Cyan - # Check if there's another level of directory inside (repo-in-repo issue) - $subDirs = Get-ChildItem -Path $extractedDir.FullName -Directory - $foundNestedRepo = $false - - if ($subDirs.Count -eq 1 -and $subDirs[0].Name -like "*windows-install*") { - Write-Host "Detected nested repository structure, using correct source directory..." -ForegroundColor Yellow - $sourceDir = $subDirs[0].FullName - $foundNestedRepo = $true - } else { - $sourceDir = $extractedDir.FullName - } - - # Copy files from the correct source directory - Get-ChildItem -Path $sourceDir | Where-Object { $_.Name -ne ".git" } | ForEach-Object { + # Copy files from the extracted directory directly + Get-ChildItem -Path $extractedDir.FullName | Where-Object { $_.Name -ne ".git" } | ForEach-Object { $destPath = Join-Path -Path $updateScriptDir -ChildPath $_.Name Copy-Item -Path $_.FullName -Destination $destPath -Recurse -Force } diff --git a/2_ConfigUpdate.ps1 b/2_ConfigUpdate.ps1 index 8a30188..fbe62a6 100644 --- a/2_ConfigUpdate.ps1 +++ b/2_ConfigUpdate.ps1 @@ -67,27 +67,15 @@ function Update-Scripts { Write-Host "Extracting update package..." -ForegroundColor Cyan Expand-Archive -Path $zipPath -DestinationPath $tempDir -Force - # Find the extracted directory - usually named like "windows-install-master" - $extractedDir = Get-ChildItem -Path $tempDir -Directory | Select-Object -First 1 + # Based on our analysis, the zip extracts to a "windows-install" directory + $extractedDir = Get-ChildItem -Path $tempDir -Directory | Where-Object { $_.Name -eq "windows-install" } | Select-Object -First 1 if (($extractedDir) -and ((Test-Path $extractedDir.FullName))) { # Copy all files except .git directory to current location - Write-Host "Installing updates..." -ForegroundColor Cyan + Write-Host "Installing updates from $($extractedDir.FullName)..." -ForegroundColor Cyan - # Check if there's another level of directory inside (repo-in-repo issue) - $subDirs = Get-ChildItem -Path $extractedDir.FullName -Directory - $foundNestedRepo = $false - - if ($subDirs.Count -eq 1 -and $subDirs[0].Name -like "*windows-install*") { - Write-Host "Detected nested repository structure, using correct source directory..." -ForegroundColor Yellow - $sourceDir = $subDirs[0].FullName - $foundNestedRepo = $true - } else { - $sourceDir = $extractedDir.FullName - } - - # Copy files from the correct source directory - Get-ChildItem -Path $sourceDir | Where-Object { $_.Name -ne ".git" } | ForEach-Object { + # Copy files from the extracted directory directly + Get-ChildItem -Path $extractedDir.FullName | Where-Object { $_.Name -ne ".git" } | ForEach-Object { $destPath = Join-Path -Path $updateScriptDir -ChildPath $_.Name Copy-Item -Path $_.FullName -Destination $destPath -Recurse -Force } diff --git a/3_ConfigAfterNextcloud.ps1 b/3_ConfigAfterNextcloud.ps1 index 7778094..39fe926 100644 --- a/3_ConfigAfterNextcloud.ps1 +++ b/3_ConfigAfterNextcloud.ps1 @@ -67,27 +67,15 @@ function Update-Scripts { Write-Host "Extracting update package..." -ForegroundColor Cyan Expand-Archive -Path $zipPath -DestinationPath $tempDir -Force - # Find the extracted directory - usually named like "windows-install-master" - $extractedDir = Get-ChildItem -Path $tempDir -Directory | Select-Object -First 1 + # Based on our analysis, the zip extracts to a "windows-install" directory + $extractedDir = Get-ChildItem -Path $tempDir -Directory | Where-Object { $_.Name -eq "windows-install" } | Select-Object -First 1 if (($extractedDir) -and ((Test-Path $extractedDir.FullName))) { # Copy all files except .git directory to current location - Write-Host "Installing updates..." -ForegroundColor Cyan + Write-Host "Installing updates from $($extractedDir.FullName)..." -ForegroundColor Cyan - # Check if there's another level of directory inside (repo-in-repo issue) - $subDirs = Get-ChildItem -Path $extractedDir.FullName -Directory - $foundNestedRepo = $false - - if ($subDirs.Count -eq 1 -and $subDirs[0].Name -like "*windows-install*") { - Write-Host "Detected nested repository structure, using correct source directory..." -ForegroundColor Yellow - $sourceDir = $subDirs[0].FullName - $foundNestedRepo = $true - } else { - $sourceDir = $extractedDir.FullName - } - - # Copy files from the correct source directory - Get-ChildItem -Path $sourceDir | Where-Object { $_.Name -ne ".git" } | ForEach-Object { + # Copy files from the extracted directory directly + Get-ChildItem -Path $extractedDir.FullName | Where-Object { $_.Name -ne ".git" } | ForEach-Object { $destPath = Join-Path -Path $updateScriptDir -ChildPath $_.Name Copy-Item -Path $_.FullName -Destination $destPath -Recurse -Force }