added TODO category
This commit is contained in:
parent
79f3c61cac
commit
de1a45482d
154 changed files with 549 additions and 629 deletions
71
scripts/normalize_metadata.ps1
Normal file
71
scripts/normalize_metadata.ps1
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
# Normalize metadata files under modules/billing/docs
|
||||
# - Removes the `complete` field from all metadata.json
|
||||
# - If complete == false, set category to "todo"
|
||||
# - Writes pretty JSON without BOM
|
||||
|
||||
# Determine repository root from script location and set docs path
|
||||
$scriptDir = (Get-Item $PSScriptRoot).FullName
|
||||
$repoRoot = (Get-Item $scriptDir).Parent.FullName
|
||||
$docsRoot = Join-Path $repoRoot "modules\billing\docs"
|
||||
if (-not (Test-Path $docsRoot)) {
|
||||
# If that fails, try current directory fallback
|
||||
$docsRoot = Join-Path (Get-Location) "modules\billing\docs"
|
||||
}
|
||||
|
||||
Write-Host "Scanning metadata under: $docsRoot"
|
||||
|
||||
Get-ChildItem -Path $docsRoot -Recurse -Filter metadata.json | ForEach-Object {
|
||||
$file = $_.FullName
|
||||
Write-Host "Processing: $file"
|
||||
$raw = Get-Content $file -Raw
|
||||
# Remove BOM if present
|
||||
$raw = $raw -replace "^\uFEFF", ""
|
||||
|
||||
try {
|
||||
$obj = $raw | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-Warning "Failed to parse JSON: $file - skipping"
|
||||
return
|
||||
}
|
||||
|
||||
# Build a hash without the 'complete' key
|
||||
$h = @{}
|
||||
foreach ($p in $obj.PSObject.Properties) {
|
||||
if ($p.Name -ieq 'complete') { continue }
|
||||
$h[$p.Name] = $p.Value
|
||||
}
|
||||
|
||||
# If original had complete == $false, ensure category = 'todo'
|
||||
if ($obj.PSObject.Properties.Name -contains 'complete') {
|
||||
if ($obj.complete -eq $false) {
|
||||
# only set if not already a real category
|
||||
$h['category'] = 'todo'
|
||||
}
|
||||
}
|
||||
|
||||
# Ensure category exists
|
||||
if (-not ($h.ContainsKey('category'))) {
|
||||
# default to 'todo' for items without category
|
||||
$h['category'] = 'todo'
|
||||
}
|
||||
|
||||
# Convert to JSON with consistent ordering (name, description, category, order)
|
||||
$ordered = @{}
|
||||
if ($h.ContainsKey('name')) { $ordered['name'] = $h['name'] }
|
||||
if ($h.ContainsKey('description')) { $ordered['description'] = $h['description'] }
|
||||
if ($h.ContainsKey('category')) { $ordered['category'] = $h['category'] }
|
||||
if ($h.ContainsKey('order')) { $ordered['order'] = $h['order'] }
|
||||
foreach ($k in $h.Keys) {
|
||||
if ($k -in @('name','description','category','order')) { continue }
|
||||
$ordered[$k] = $h[$k]
|
||||
}
|
||||
|
||||
$json = $ordered | ConvertTo-Json -Depth 10
|
||||
# Make it pretty: ConvertTo-Json outputs compact arrays sometimes; ensure 4-space indent
|
||||
$formatted = $json -replace '\\r?\\n', "`n" # normalize newlines
|
||||
|
||||
# Write without BOM
|
||||
[System.IO.File]::WriteAllText($file, $formatted, [System.Text.Encoding]::UTF8)
|
||||
Write-Host "Updated: $file"
|
||||
}
|
||||
Write-Host "Done."
|
||||
Loading…
Add table
Add a link
Reference in a new issue