daggerheart/tools/create-symlink.mjs
joaquinpereyra98 879299b661
#98 jsconfig and symlink setup (#99)
* FEAT: add jsconfig.json file

* FEAT: add new script createSymlink
FEAT: add new file tools/create-symlink.mjs
FEAT: add d.ts files
FIX: add new foundry symlink to .gitignore

---------

Co-authored-by: Joaquin Pereyra <joaquinpereyra98@users.noreply.github.com>
2025-06-01 02:54:45 +02:00

52 lines
1.2 KiB
JavaScript

import fs from "fs";
import path from "path";
import readline from "readline";
console.log("Reforging Symlinks");
const askQuestion = (question) => {
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
return new Promise((resolve) =>
rl.question(question, (answer) => {
rl.close();
resolve(answer);
})
);
};
const installPath = await askQuestion("Enter your Foundry install path: ");
// Determine if it's an Electron install (nested structure)
const nested = fs.existsSync(path.join(installPath, "resources", "app"));
const fileRoot = nested
? path.join(installPath, "resources", "app")
: installPath;
try {
await fs.promises.mkdir("foundry");
} catch (e) {
if (e.code !== "EEXIST") throw e;
}
// JavaScript files
for (const p of ["client", "common", "tsconfig.json"]) {
try {
await fs.promises.symlink(path.join(fileRoot, p), path.join("foundry", p));
} catch (e) {
if (e.code !== "EEXIST") throw e;
}
}
// Language files
try {
await fs.promises.symlink(
path.join(fileRoot, "public", "lang"),
path.join("foundry", "lang")
);
} catch (e) {
if (e.code !== "EEXIST") throw e;
}