src/Private/Global/Get-RenderKitProject.ps1
|
function Get-RenderKitProject{ [CmdletBinding()] param( [Parameter(Mandatory)] [string]$ProjectName, [string]$Path ) Write-RenderKitLog -Level Debug -Message "Get-RenderKitProject started: ProjectName='$ProjectName', Path='$Path'." $searchRoots = @() if ($Path) { $searchRoots += $Path } else { $config = Get-RenderKitConfig if ($config.DefaultProjectPath){ $searchRoots += $config.DefaultProjectPath } } foreach ($root in $searchRoots){ $candidate = Join-Path $root $ProjectName if (!(Test-Path $candidate)) { continue } try { $metaPath = Join-Path $candidate "\.renderkit\project.json" $meta = Get-Content $metaPath -Raw | ConvertFrom-Json } catch { Write-RenderKitLog -Level Error -Message "Invalid project metadata JSON in '$metaPath'." throw "Invalid project metadata JSON in $metaPath" } #validation if ( !($meta.project.id) -or !($meta.project.name) -or $meta.tool -ne "RenderKit" ) { Write-RenderKitLog -Level Error -Message "Invalid RenderKit project metadata schema in '$metaPath'." throw "Invalid RenderKit project metadata schema" } return [PSCustomObject]@{ id = $meta.project.id Name = $meta.project.name RootPath = $candidate MetadataPath = $metaPath Metadata = $meta } } Write-RenderKitLog -Level Error -Message "RenderKit project '$ProjectName' not found in search roots: $($searchRoots -join ', ')." throw "RenderKit project $ProjectName not found" } |