( compressor: Compressor, input: string, opts: Options )
| 133 | } |
| 134 | |
| 135 | async function processFile( |
| 136 | compressor: Compressor, |
| 137 | input: string, |
| 138 | opts: Options |
| 139 | ): Promise<Result> { |
| 140 | const absInput = resolve(input); |
| 141 | const inputSize = statSync(absInput).size; |
| 142 | const output = getOutputPath(absInput, opts.format, opts.keep, opts.output); |
| 143 | const tempOutput = output + ".tmp"; |
| 144 | |
| 145 | await compress(compressor, absInput, tempOutput, opts.format, opts.quality); |
| 146 | |
| 147 | const outputSize = statSync(tempOutput).size; |
| 148 | |
| 149 | if (!opts.keep && absInput !== output) { |
| 150 | const ext = extname(absInput); |
| 151 | const base = absInput.slice(0, -ext.length); |
| 152 | renameSync(absInput, `${base}_original${ext}`); |
| 153 | } |
| 154 | renameSync(tempOutput, output); |
| 155 | |
| 156 | return { |
| 157 | input: absInput, |
| 158 | output, |
| 159 | inputSize, |
| 160 | outputSize, |
| 161 | ratio: outputSize / inputSize, |
| 162 | compressor, |
| 163 | }; |
| 164 | } |
| 165 | |
| 166 | function collectFiles(dir: string, recursive: boolean): string[] { |
| 167 | const files: string[] = []; |
no test coverage detected