mirror of
https://github.com/hydralauncher/hydra.git
synced 2026-01-10 05:16:19 +00:00
71 lines
1.8 KiB
JavaScript
71 lines
1.8 KiB
JavaScript
const { default: axios } = require("axios");
|
|
const tar = require("tar");
|
|
const util = require("node:util");
|
|
const fs = require("node:fs");
|
|
const path = require("node:path");
|
|
|
|
const exec = util.promisify(require("node:child_process").exec);
|
|
|
|
const ludusaviVersion = "0.29.0";
|
|
|
|
const fileName = {
|
|
win32: `ludusavi-v${ludusaviVersion}-win64.zip`,
|
|
linux: `ludusavi-v${ludusaviVersion}-linux.tar.gz`,
|
|
darwin: `ludusavi-v${ludusaviVersion}-mac.tar.gz`,
|
|
};
|
|
|
|
const ludusaviBinaryName = {
|
|
win32: "ludusavi.exe",
|
|
linux: "ludusavi",
|
|
darwin: "ludusavi",
|
|
};
|
|
|
|
const downloadLudusavi = async () => {
|
|
if (
|
|
fs.existsSync(
|
|
path.join(process.cwd(), "ludusavi", ludusaviBinaryName[process.platform])
|
|
)
|
|
) {
|
|
console.log("Ludusavi already exists, skipping download...");
|
|
return;
|
|
}
|
|
|
|
const file = fileName[process.platform];
|
|
const downloadUrl = `https://github.com/mtkennerly/ludusavi/releases/download/v${ludusaviVersion}/${file}`;
|
|
|
|
console.log(`Downloading ${file}...`);
|
|
|
|
const response = await axios.get(downloadUrl, { responseType: "stream" });
|
|
|
|
const stream = response.data.pipe(fs.createWriteStream(file));
|
|
|
|
stream.on("finish", async () => {
|
|
console.log(`Downloaded ${file}, extracting...`);
|
|
|
|
const pwd = process.cwd();
|
|
const targetPath = path.join(pwd, "ludusavi");
|
|
|
|
await fs.promises.mkdir(targetPath, { recursive: true });
|
|
|
|
if (process.platform === "win32") {
|
|
await exec(`npx extract-zip ${file} ${targetPath}`);
|
|
} else {
|
|
await tar.x({
|
|
file: file,
|
|
cwd: targetPath,
|
|
});
|
|
}
|
|
|
|
if (process.platform !== "win32") {
|
|
fs.chmodSync(path.join(targetPath, "ludusavi"), 0o755);
|
|
}
|
|
|
|
console.log("Extracted. Renaming folder...");
|
|
|
|
console.log(`Extracted ${file}, removing compressed downloaded file...`);
|
|
fs.rmSync(file);
|
|
});
|
|
};
|
|
|
|
downloadLudusavi();
|