this repo has no description
at v1.2.1 1.6 kB view raw
1// Janky script to get around pnpm link issues 2// Probably don't use this. Probably 3/* eslint-disable no-console */ 4const fs = require("fs"); 5const path = require("path"); 6const child_process = require("child_process"); 7 8const onDisk = { 9 "@moonlight-mod/lunast": "../lunast", 10 "@moonlight-mod/moonmap": "../moonmap", 11 "@moonlight-mod/mappings": "../mappings" 12}; 13 14function exec(cmd, dir) { 15 child_process.execSync(cmd, { cwd: dir, stdio: "inherit" }); 16} 17 18function getDeps(packageJSON) { 19 const ret = {}; 20 Object.assign(ret, packageJSON.dependencies || {}); 21 Object.assign(ret, packageJSON.devDependencies || {}); 22 Object.assign(ret, packageJSON.peerDependencies || {}); 23 return ret; 24} 25 26function link(dir) { 27 const packageJSON = JSON.parse( 28 fs.readFileSync(path.join(dir, "package.json"), "utf8") 29 ); 30 const deps = getDeps(packageJSON); 31 32 for (const [dep, path] of Object.entries(onDisk)) { 33 if (deps[dep]) { 34 exec(`pnpm link ${path}`, dir); 35 } 36 } 37} 38 39function undo(dir) { 40 exec("pnpm unlink", dir); 41 try { 42 exec("git restore pnpm-lock.yaml", dir); 43 } catch { 44 // ignored 45 } 46} 47 48const shouldUndo = process.argv.includes("--undo"); 49const packages = fs.readdirSync("./packages"); 50 51for (const path of Object.values(onDisk)) { 52 console.log(path); 53 if (shouldUndo) { 54 undo(path); 55 } else { 56 link(path); 57 } 58} 59 60if (shouldUndo) { 61 const dir = __dirname; 62 console.log(dir); 63 undo(dir); 64} else { 65 for (const pkg of packages) { 66 const dir = path.join(__dirname, "packages", pkg); 67 console.log(dir); 68 link(dir); 69 } 70}