Pipelines/WebP.ps1

function Get-FoWebPPipeline {
    param([hashtable]$Context)

    $s = $Context.Settings
    $level = $s.Level
    $pingoLevel = [math]::Min($level * 4 / 9, 4)
    $pingo = "-s$pingoLevel "
    if ($s.WEBPAllowLossy) { $pingo += '-quality=95 -webp ' } else { $pingo += '-lossless ' }
    if ($s.WEBPAllowLossy) {
        $cwebpLevel = [math]::Min($level * 6 / 9, 6)
        $cwebp = "-mt -quiet -m $cwebpLevel "
    }
    else {
        $cwebpLevel = [math]::Min($level, 9)
        $cwebp = "-mt -quiet -z $cwebpLevel -lossless "
    }
    $steps = @()

    $steps += New-FoStep -Name 'pingo (1/2)' -Executable 'pingo.exe' -Arguments "$pingo%TMPINPUTFILE%" -Mode TempInput
    $steps += New-FoStep -Name 'cwebp (2/2)' -Executable 'cwebp.exe' -Arguments "$cwebp%INPUTFILE% -o %TMPOUTPUTFILE%" -Mode TempOutput

    return $steps
}