public/Invoke-CookbookDatabaseMigration.ps1
|
function Invoke-CookbookDatabaseMigration { [CmdletBinding()] param( [Parameter(Mandatory)] [string]$DestinationDbPath ) # Don't overwrite an existing DB if (Test-Path $DestinationDbPath) { return } # Old DB candidates - module versioned folder patterns $oldCandidates = @( Join-Path $PSScriptRoot "data/recipes.db" Join-Path $PSScriptRoot "data/cookbook.db" Join-Path $PSScriptRoot "recipes.db" Join-Path $PSScriptRoot "cookbook.db" ) | ForEach-Object { try { [System.IO.Path]::GetFullPath($_) } catch { $_ } } | Select-Object -Unique $sourceDb = $oldCandidates | Where-Object { Test-Path $_ } | Select-Object -First 1 if (-not $sourceDb) { return } $destFolder = Split-Path $DestinationDbPath -Parent if (-not (Test-Path $destFolder)) { New-Item -Path $destFolder -ItemType Directory -Force | Out-Null } Copy-Item -Path $sourceDb -Destination $DestinationDbPath -Force Write-Information "Migrated DB from '$sourceDb' to '$DestinationDbPath'" -InformationAction Continue } |