Compare commits

..

No commits in common. "6dfdf4a8629dda8664dfa2f0a7c2c5bf9ae5dcb7" and "463eff3b24cd216f7c86300359905c4875b21b00" have entirely different histories.

2 changed files with 18 additions and 48 deletions

View File

@ -51,43 +51,6 @@ else {
$currentScriptPath = [System.IO.Path]::GetFullPath($MyInvocation.MyCommand.Path) $currentScriptPath = [System.IO.Path]::GetFullPath($MyInvocation.MyCommand.Path)
$selfUpdateDirectory = 'Update-RepoUtils' $selfUpdateDirectory = 'Update-RepoUtils'
function ConvertTo-NormalizedRelativePath {
param(
[Parameter(Mandatory = $true)]
[string]$Path
)
$normalizedPath = $Path.Replace('/', [System.IO.Path]::DirectorySeparatorChar).Replace('\', [System.IO.Path]::DirectorySeparatorChar)
return $normalizedPath.TrimStart('.', [System.IO.Path]::DirectorySeparatorChar).TrimEnd([System.IO.Path]::DirectorySeparatorChar)
}
function Test-IsInRelativeDirectory {
param(
[Parameter(Mandatory = $true)]
[string]$RelativePath,
[Parameter(Mandatory = $true)]
[string[]]$Directories
)
$normalizedRelativePath = ConvertTo-NormalizedRelativePath -Path $RelativePath
foreach ($directory in $Directories) {
$normalizedDirectory = ConvertTo-NormalizedRelativePath -Path $directory
if ([string]::IsNullOrWhiteSpace($normalizedDirectory)) {
continue
}
if (
$normalizedRelativePath.Equals($normalizedDirectory, [System.StringComparison]::OrdinalIgnoreCase) -or
$normalizedRelativePath.StartsWith($normalizedDirectory + [System.IO.Path]::DirectorySeparatorChar, [System.StringComparison]::OrdinalIgnoreCase)
) {
return $true
}
}
return $false
}
#region Import Modules #region Import Modules
$scriptConfigModulePath = Join-Path $utilsDir "ScriptConfig.psm1" $scriptConfigModulePath = Join-Path $utilsDir "ScriptConfig.psm1"
@ -120,11 +83,11 @@ $dryRun = if ($null -ne $settings.dryRun) { [bool]$settings.dryRun } else { $fal
$sourceSubdirectory = if ($settings.repository.sourceSubdirectory) { $settings.repository.sourceSubdirectory } else { 'src' } $sourceSubdirectory = if ($settings.repository.sourceSubdirectory) { $settings.repository.sourceSubdirectory } else { 'src' }
$preserveFileName = if ($settings.repository.preserveFileName) { $settings.repository.preserveFileName } else { 'scriptsettings.json' } $preserveFileName = if ($settings.repository.preserveFileName) { $settings.repository.preserveFileName } else { 'scriptsettings.json' }
$cloneDepth = if ($settings.repository.cloneDepth) { [int]$settings.repository.cloneDepth } else { 1 } $cloneDepth = if ($settings.repository.cloneDepth) { [int]$settings.repository.cloneDepth } else { 1 }
[string[]]$skippedRelativeDirectories = if ($settings.repository.skippedRelativeDirectories) { $skippedRelativeDirectories = if ($settings.repository.skippedRelativeDirectories) {
@( @(
$settings.repository.skippedRelativeDirectories | $settings.repository.skippedRelativeDirectories |
ForEach-Object { ForEach-Object {
ConvertTo-NormalizedRelativePath -Path ([string]$_) ([string]$_).Replace('/', [System.IO.Path]::DirectorySeparatorChar).Replace('\', [System.IO.Path]::DirectorySeparatorChar)
} }
) )
} }
@ -233,7 +196,7 @@ try {
} }
$preservedFiles = @() $preservedFiles = @()
[string[]]$updatePhaseSkippedDirectories = @($skippedRelativeDirectories) + $selfUpdateDirectory $updatePhaseSkippedDirectories = $skippedRelativeDirectories + $selfUpdateDirectory
$existingPreservedFiles = Get-ChildItem -Path $targetDirectory -Recurse -File -Filter $preserveFileName -ErrorAction SilentlyContinue $existingPreservedFiles = Get-ChildItem -Path $targetDirectory -Recurse -File -Filter $preserveFileName -ErrorAction SilentlyContinue
if ($existingPreservedFiles) { if ($existingPreservedFiles) {
foreach ($file in $existingPreservedFiles) { foreach ($file in $existingPreservedFiles) {
@ -271,7 +234,13 @@ try {
$filesToRemove = Get-ChildItem -Path $targetDirectory -Recurse -Force -File | $filesToRemove = Get-ChildItem -Path $targetDirectory -Recurse -Force -File |
Where-Object { Where-Object {
$relativePath = [System.IO.Path]::GetRelativePath($targetDirectory, $_.FullName) $relativePath = [System.IO.Path]::GetRelativePath($targetDirectory, $_.FullName)
$isInSkippedDirectory = Test-IsInRelativeDirectory -RelativePath $relativePath -Directories $updatePhaseSkippedDirectories $isInSkippedDirectory = $false
foreach ($skippedDirectory in $updatePhaseSkippedDirectories) {
if ($relativePath.StartsWith($skippedDirectory + [System.IO.Path]::DirectorySeparatorChar, [System.StringComparison]::OrdinalIgnoreCase)) {
$isInSkippedDirectory = $true
break
}
}
$_.Name -ne $preserveFileName -and $_.Name -ne $preserveFileName -and
-not $isInSkippedDirectory -not $isInSkippedDirectory
@ -285,11 +254,6 @@ try {
Sort-Object { $_.FullName.Length } -Descending Sort-Object { $_.FullName.Length } -Descending
foreach ($directory in $directoriesToRemove) { foreach ($directory in $directoriesToRemove) {
$relativePath = [System.IO.Path]::GetRelativePath($targetDirectory, $directory.FullName)
if (Test-IsInRelativeDirectory -RelativePath $relativePath -Directories $updatePhaseSkippedDirectories) {
continue
}
$remainingItems = Get-ChildItem -Path $directory.FullName -Force -ErrorAction SilentlyContinue $remainingItems = Get-ChildItem -Path $directory.FullName -Force -ErrorAction SilentlyContinue
if (-not $remainingItems) { if (-not $remainingItems) {
Remove-Item -Path $directory.FullName -Force Remove-Item -Path $directory.FullName -Force
@ -301,7 +265,13 @@ try {
$sourceFilesToCopy = Get-ChildItem -Path $clonedSourceDirectory -Recurse -Force -File | $sourceFilesToCopy = Get-ChildItem -Path $clonedSourceDirectory -Recurse -Force -File |
Where-Object { Where-Object {
$relativePath = [System.IO.Path]::GetRelativePath($clonedSourceDirectory, $_.FullName) $relativePath = [System.IO.Path]::GetRelativePath($clonedSourceDirectory, $_.FullName)
$isInSkippedDirectory = Test-IsInRelativeDirectory -RelativePath $relativePath -Directories $updatePhaseSkippedDirectories $isInSkippedDirectory = $false
foreach ($skippedDirectory in $updatePhaseSkippedDirectories) {
if ($relativePath.StartsWith($skippedDirectory + [System.IO.Path]::DirectorySeparatorChar, [System.StringComparison]::OrdinalIgnoreCase)) {
$isInSkippedDirectory = $true
break
}
}
-not $isInSkippedDirectory -not $isInSkippedDirectory
} }

View File

@ -2,7 +2,7 @@
"$schema": "https://json-schema.org/draft-07/schema", "$schema": "https://json-schema.org/draft-07/schema",
"title": "Update RepoUtils Script Settings", "title": "Update RepoUtils Script Settings",
"description": "Configuration for the Update-RepoUtils utility.", "description": "Configuration for the Update-RepoUtils utility.",
"dryRun": false, "dryRun": true,
"repository": { "repository": {
"url": "https://github.com/MAKS-IT-COM/maksit-repoutils.git", "url": "https://github.com/MAKS-IT-COM/maksit-repoutils.git",
"sourceSubdirectory": "src", "sourceSubdirectory": "src",