$ErrorActionPreference = 'Stop' $cacheRoot = "$env:LOCALAPPDATA\TectonicProject\Tectonic\cache" Write-Output '=== [M1] cache/bundles tree (depth 3) ===' Get-ChildItem (Join-Path $cacheRoot 'bundles') -Recurse -Depth 3 -ErrorAction SilentlyContinue | Select-Object @{n='Rel';e={$_.FullName.Substring($cacheRoot.Length+1)}}, PSIsContainer, Length | Select-Object -First 80 Rel, PSIsContainer, Length | Format-Table -AutoSize | Out-String -Width 190 | Write-Output Write-Output '=== [M2] manifest/prefetch/metadata files (names) ===' Get-ChildItem (Join-Path $cacheRoot 'bundles') -Recurse -File -ErrorAction SilentlyContinue | Where-Object { $_.Extension -notin '.otf','.ttf','.ttc' } | Select-Object -First 60 @{n='Rel';e={$_.FullName.Substring($cacheRoot.Length+1)}}, Length | Format-Table -AutoSize | Out-String -Width 190 | Write-Output Write-Output '=== [M3] content of small manifest-ish files (first 3, up to 3000 chars each) ===' $small = Get-ChildItem (Join-Path $cacheRoot 'bundles') -Recurse -File -ErrorAction SilentlyContinue | Where-Object { $_.Length -and $_.Length -lt 200000 -and $_.Extension -notin '.otf' } | Select-Object -First 3 foreach ($f in $small) { Write-Output ("---- " + $f.FullName.Substring($cacheRoot.Length+1) + " ($($f.Length) bytes) ----") (Get-Content $f.FullName -Raw -ErrorAction SilentlyContinue).Substring(0, [Math]::Min(3000, (Get-Item $f.FullName).Length)) }