#!/usr/bin/env node /** * Cross-platform update:minor script * Calculates date from 7 days ago and runs npm update/audit with that date */ const { spawn } = require("child_process"); // Calculate date from 7 days ago in YYYY-MM-DD format const date = new Date(); date.setDate(date.getDate() - 7); const beforeDate = date.toISOString().split("T")[0]; console.log(`Updating packages modified before: ${beforeDate}`); let lastExitCode = 0; // Run npm outdated first const outdated = spawn("npm", ["outdated"], { stdio: "inherit", shell: true }); outdated.on("close", (_code) => { // npm outdated returns exit code 1 if updates are available, so we ignore it // Run npm update with before date const update = spawn("npm", ["update", `--before=${beforeDate}`], { stdio: "inherit", shell: true, }); update.on("close", (updateCode) => { // Track update failures if (updateCode !== 0) { lastExitCode = updateCode; } // Run npm audit fix with before date const audit = spawn("npm", ["audit", "fix", `--before=${beforeDate}`], { stdio: "inherit", shell: true, }); audit.on("close", (auditCode) => { // Track audit failures (but don't override critical update failures) if (auditCode !== 0 && lastExitCode === 0) { lastExitCode = auditCode; } // Update complete - report with tracked exit code console.log("\nPackage update complete!"); process.exit(lastExitCode); }); }); });