diff options
Diffstat (limited to 'scripts/depcheck.js')
-rw-r--r-- | scripts/depcheck.js | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/scripts/depcheck.js b/scripts/depcheck.js new file mode 100644 index 00000000..44ac2bb6 --- /dev/null +++ b/scripts/depcheck.js @@ -0,0 +1,50 @@ +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}`); + }); +}); |