spirit-tracker/tools/discover_bad_skus.js
Brennan Wilkes (Text Groove) 7a33d51c90 UX Improvements
2026-02-10 16:45:22 -08:00

43 lines
1.2 KiB
JavaScript

#!/usr/bin/env node
const fs = require("fs");
const path = require("path");
const DB_DIR = path.join(__dirname, "../data/db");
const LINKS_FILE = path.join(__dirname, "../data/sku_links.json");
const includeKegNCork = process.argv.includes("--include-kegncork");
const includeCoop = process.argv.includes("--include-coop");
const includeLinked = process.argv.includes("--include-linked");
// load linked SKUs
const linkedSkus = new Set();
if (!includeLinked && fs.existsSync(LINKS_FILE)) {
const { links } = JSON.parse(fs.readFileSync(LINKS_FILE, "utf8"));
for (const { fromSku, toSku } of links) {
linkedSkus.add(String(fromSku));
linkedSkus.add(String(toSku));
}
}
for (const file of fs.readdirSync(DB_DIR)) {
if (!file.endsWith(".json")) continue;
if (!includeKegNCork && file.startsWith("kegncork__")) continue;
if (!includeCoop && file.startsWith("coop__")) continue;
const data = JSON.parse(fs.readFileSync(path.join(DB_DIR, file), "utf8"));
if (!Array.isArray(data.items)) continue;
for (const { sku, url, removed } of data.items) {
if (
removed === false &&
typeof sku === "string" &&
sku.startsWith("u:") &&
url &&
(includeLinked || !linkedSkus.has(sku))
) {
console.log(url);
}
}
}