ffmpeg-static-electron-forge
Version:
This module is designed for fast integration with electron forge and webpack.
69 lines (68 loc) • 2.31 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = __importDefault(require("fs"));
const os_1 = __importDefault(require("os"));
const path_1 = __importDefault(require("path"));
const adm_zip_1 = __importDefault(require("adm-zip"));
const stream_1 = require("stream");
const downloadUrls = {
darwin: {
url: "https://dl.dropboxusercontent.com/sh/3scfjeuno6b03o5/AAAy1zZNHiC_tTPEtzzHg9xVa/darwin.zip?dl=0",
name: "darwin.zip",
},
linux: {
url: "https://dl.dropboxusercontent.com/sh/3scfjeuno6b03o5/AADZtD8GXegArBWFTgJBNSYLa/linux.zip?dl=0",
name: "linux.zip",
},
win32: {
url: "https://dl.dropboxusercontent.com/sh/3scfjeuno6b03o5/AABsiTT_AKQf8MoWH_klBfQ6a/win32.zip?dl=0",
name: "win32.zip",
},
};
const downloadPath = path_1.default.join(__dirname, "bin");
try {
fs_1.default.mkdirSync(downloadPath);
}
catch (error) {
// ignore
}
if (process.env.ALL_BINS) {
Object.values(downloadUrls).map((value) => {
download(value);
});
}
else {
if (os_1.default.platform() in downloadUrls) {
// @ts-ignore
download(downloadUrls[os_1.default.platform()]);
}
}
function download(value) {
fetch(value.url)
.then((res) => {
if (res.body) {
const zipFile = path_1.default.join(downloadPath, value.name);
const dest = fs_1.default.createWriteStream(zipFile);
// @ts-ignore
(0, stream_1.pipeline)(res.body, dest, (err) => {
if (err) {
console.error("Error downloading binaries", err);
}
else {
console.log("Binaries downloaded successfully.");
}
});
dest.on("close", () => {
const zip = new adm_zip_1.default(zipFile);
zip.extractAllTo(downloadPath, true);
fs_1.default.unlinkSync(zipFile);
});
}
})
.catch((reason) => {
console.error("Error downloading binaries", reason);
});
}