@codenoobforreal/clitools
Version:
CLI tool for video processing (H.265/HEVC encoding & QuickTime compatibility) using FFmpeg, and batch lossless image compression with format preservation
36 lines (35 loc) • 1.39 kB
JavaScript
import { spinner } from "@clack/prompts";
import { encodeImage } from "../../core/image/encode.js";
import { getImageListFromUserInput } from "../../core/image/pipeline.js";
import { EncodeImageError } from "../../error.js";
import { createConcurrencyLimit } from "../../libs/concurrency.js";
export async function encodeImageTask({ input }) {
const s = spinner();
s.start(`Encoding images in: ${input}`);
const imageList = await getImageListFromUserInput(input);
const limit = createConcurrencyLimit();
const tasks = imageList.map((imagePath) => limit(() => encodeImage(imagePath)));
const results = await Promise.allSettled(tasks);
const successList = [];
const failureList = [];
results.forEach((result) => {
if (result.status === "fulfilled") {
successList.push(result.value);
}
else {
const error = result.reason instanceof EncodeImageError
? result.reason
: new Error(`Unknown error: ${JSON.stringify(result.reason)}`);
failureList.push(error);
}
});
s.stop(`
Task completed:
==========================
Successes: ${successList.length}
Failures: ${failureList.length}
${failureList.length > 0 ? "Failure details:" : ""}
${failureList.map((f) => `${f.message}`).join("\n")}
`);
}
//# sourceMappingURL=index.js.map