Pipelines/ZIP.ps1
|
function Get-FoZIPPipeline { param([hashtable]$Context) $s = $Context.Settings $level = $s.Level $leanify = Get-FoLeanifyIterations -Level $level -Override $s.LeanifyIterations $ect = Get-FoECTPreset -Level $level $steps = @() # FileOptimizer parity (cppMain.cpp, ZIP section): # - When ZIPCopyMetadata is enabled: keep ZIP entry metadata (via leanify --keep-exif) # - Otherwise: allow stripping (handled later for ECT and by /c for deflopt). $zipFlags = '' if ($s.ZIPCopyMetadata) { $zipFlags += '--keep-exif ' } $zipFlags += '--zip-deflate ' if ($s.ZIPRecurse) { $zipFlags += '-d 1 ' } $steps += New-FoStep -Name 'Leanify (1/6)' -Executable 'leanify.exe' -Arguments "-q -p -i $leanify $zipFlags%TMPINPUTFILE%" -Mode TempInput $ectZip = "-quiet --mt-deflate --mt-file -zip $ect " if (-not $s.ZIPCopyMetadata) { $ectZip += '-strip ' } if (-not $s.ZIPRecurse) { $ectZip += '--disable-png --disable-jpg ' } $steps += New-FoStep -Name 'ECT (2/6)' -Executable 'ECT.exe' -Arguments "$ectZip%TMPINPUTFILE%" -Mode TempInput $steps += New-FoStep -Name 'advzip (3/6)' -Executable 'advzip.exe' -Arguments '-z -q -4 %TMPINPUTFILE%' -Mode TempInput -Gate { -not $args[0].IsZipSFX } $deflOptZipFlags = '/a /b /s ' if ($s.ZIPCopyMetadata) { $deflOptZipFlags += '/c ' } $steps += New-FoStep -Name 'DeflOpt (4/6)' -Executable 'deflopt.exe' -Arguments ($deflOptZipFlags + '%TMPINPUTFILE%') -Mode TempInput $steps += New-FoStep -Name 'defluff (5/6)' -Handler 'DefluffPipe' -Mode TempOutput $steps += New-FoStep -Name 'DeflOpt (6/6)' -Executable 'deflopt.exe' -Arguments ($deflOptZipFlags + '%TMPINPUTFILE%') -Mode TempInput return $steps } |