Update scripts to allow auto-linking of Foundry source for intellisense

This commit is contained in:
Eldritch-Oliver 2025-09-28 00:34:49 -06:00
parent 65cc95c35c
commit 6866bea131
7 changed files with 66 additions and 8 deletions

1
.gitignore vendored
View file

@ -1,3 +1,4 @@
node_modules/ node_modules/
deprecated deprecated
.env .env
/foundry

View file

@ -11,7 +11,7 @@
".styles": false, ".styles": false,
"node_modules": true, "node_modules": true,
"packs": true, "packs": true,
"foundry": false "foundry": true
}, },
"html.customData": [ "html.customData": [
"./.vscode/components.html-data.json" "./.vscode/components.html-data.json"

5
augments.d.ts vendored
View file

@ -1,3 +1,8 @@
declare global {
class Hooks extends foundry.helpers.Hooks {};
const fromUuid = foundry.utils.fromUuid;
}
interface Actor { interface Actor {
/** The system-specific data */ /** The system-specific data */
system: any; system: any;

View file

@ -4,7 +4,7 @@ import stylistic from "@stylistic/eslint-plugin";
export default [ export default [
// Tell eslint to ignore files that I don't mind being formatted slightly differently // Tell eslint to ignore files that I don't mind being formatted slightly differently
{ ignores: [ `scripts/` ] }, { ignores: [ `scripts/`, `foundry/*` ] },
{ {
languageOptions: { languageOptions: {
globals: globals.browser, globals: globals.browser,

View file

@ -1,7 +1,19 @@
{ {
"compilerOptions": { "compilerOptions": {
"module": "es2022",
"target": "es2022",
"types": [ "types": [
"./augments.d.ts" "./augments.d.ts"
],
"paths": {
"@client/*": ["./foundry/client/*"],
"@common/*": ["./foundry/common/*"],
}
},
"include": [
"module/main.mjs",
"foundry/client/client.mjs",
"foundry/client/global.d.mts",
"foundry/common/primitives/global.d.mts"
] ]
} }
}

View file

@ -9,6 +9,9 @@
"globals": "^15.9.0" "globals": "^15.9.0"
}, },
"scripts": { "scripts": {
"build": "node scripts/buildCompendia.mjs",
"extract": "node scripts/extractCompendia.mjs",
"link": "node scripts/linkFoundry.mjs",
"lint": "eslint --fix", "lint": "eslint --fix",
"lint:nofix": "eslint" "lint:nofix": "eslint"
} }

View file

@ -1,10 +1,47 @@
import { existsSync } from "fs";
import { symlink, unlink } from "fs/promises";
import { join } from "path";
import { config } from "dotenv"; import { config } from "dotenv";
config();
console.log(process.env) config({ quiet: true });
const root = process.env.FOUNDRY_ROOT; const root = process.env.FOUNDRY_ROOT;
// Early exit // Early exit
if (!root) { process.exit(1) }; if (!root) {
console.error(`Must provide a FOUNDRY_ROOT environment variable`);
process.exit(1);
};
// Assert root exists // Assert Foundry exists
if (!existsSync(root)) {
console.error(`Foundry root not found.`);
process.exit(1);
};
// Removing existing symlink
if (existsSync(`foundry`)) {
console.log(`Attempting to unlink foundry instance`);
try {
await unlink(`foundry`);
} catch {
console.error(`Failed to unlink foundry folder.`);
process.exit(1);
};
};
// Account for if the root is pointing at an Electron install
let targetRoot = root;
if (existsSync(join(root, `resources`, `app`))) {
console.log(`Switching to use the "${root}/resources/app" directory`);
targetRoot = join(root, `resources`, `app`);
};
// Create symlink
console.log(`Linking foundry source into folder`)
try {
await symlink(targetRoot, `foundry`);
} catch (e) {
console.error(e);
process.exit(1);
};