55 lines
1.2 KiB
JavaScript
55 lines
1.2 KiB
JavaScript
/* eslint-disable no-undef */
|
|
|
|
import lnk from "lnk";
|
|
import { lstat, readdir, readlink, rmdir, unlink } from "node:fs/promises";
|
|
import { resolve } from "node:path";
|
|
|
|
const publicFolder = resolve("public");
|
|
const path = resolve("public", "assets");
|
|
const revoltAssets = resolve("assets");
|
|
const fallbackAssets = resolve("scripts", "assets_fallback");
|
|
|
|
/**
|
|
* Create the symlink
|
|
*/
|
|
async function createSymlink() {
|
|
try {
|
|
await lstat(revoltAssets);
|
|
if ((await readdir(revoltAssets)).length === 0) throw "Empty Directory";
|
|
await lnk(resolve(revoltAssets), resolve(publicFolder), {
|
|
rename: "assets",
|
|
});
|
|
console.info(`Configured Stoat assets.`);
|
|
} catch (error) {
|
|
if (error === "Empty Directory" || error.code === "ENOENT") {
|
|
await lnk(resolve(fallbackAssets), resolve(publicFolder), {
|
|
rename: "assets",
|
|
});
|
|
console.info(`Configured fallback assets.`);
|
|
} else {
|
|
console.error(error);
|
|
process.exit(-1);
|
|
}
|
|
}
|
|
}
|
|
|
|
try {
|
|
await lstat(path);
|
|
|
|
try {
|
|
await readlink(path);
|
|
await unlink(path);
|
|
} catch {
|
|
await rmdir(path);
|
|
}
|
|
|
|
createSymlink();
|
|
} catch (error) {
|
|
if (error.code === "ENOENT") {
|
|
createSymlink();
|
|
} else {
|
|
console.error(error);
|
|
process.exit(-1);
|
|
}
|
|
}
|