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}`);
+ });
+});
|