const path = require("path"); const fs = require("fs"); const { env } = require("process"); const { execSync } = require("child_process"); const { argv, stdout, exit } = require("process"); const { execIn, getLines } = require("./utils"); let npmi_extra_flags = ""; const resolveminor = argv.includes("resolveminor"); if (argv.includes("nobuild")) npmi_extra_flags += "--ignore-scripts "; parts.forEach((part) => { let partDir = path.join(__dirname, "..", "..", part); let distDir = path.join(partDir, "dist"); console.log(`Checking updates for ${part} (${partDir})`); if (part == "bundle") { execIn(`npm run syncdeps`, partDir); } if (resolveminor) { fs.rmSync(path.join(partDir, "node_modules"), { recursive: true, force: true }); execIn(`npm i --save --no-fund --no-audit --no-package-lock ${npmi_extra_flags}`, partDir); } let x = [ [ "pkg", { current: "1.0", wanted: "2.0", latest: "2.0", dependent: "cdn", location: "/usr/src/fosscord/bundle/node_packages/pkg" } ] ]; x = Object.entries(JSON.parse(execIn("npm outdated --json", partDir))); x.forEach((a) => { let pkgname = a[0]; let pkginfo = a[1]; if (!pkginfo.current) console.log(`MISSING ${pkgname}: ${pkginfo.current} -> ${pkginfo.wanted} (latest: ${pkginfo.latest})`); else if (pkginfo.latest != pkginfo.wanted) { if (pkginfo.current != pkginfo.wanted) console.log(`MINOR ${pkgname}: ${pkginfo.current} -> ${pkginfo.wanted}`); console.log(`MAJOR ${pkgname}: ${pkginfo.current} -> ${pkginfo.latest}`); } else console.log(`MINOR ${pkgname}: ${pkginfo.current} -> ${pkginfo.wanted}`); }); });