summary refs log tree commit diff
path: root/scripts/depcheck.js
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/depcheck.js')
-rw-r--r--scripts/depcheck.js50
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}`);
+	});
+});