import { load } from "cheerio"; import { readFile, writeFile } from "fs"; import process from "child_process"; import stores from "./stores.json" assert { type: "json" }; function GetRecentChanges() { const res = process .execSync('git log -15 --pretty=format:"%ct %s"') .toString(); return res.split("\n"); } function ChangeLog(logs) { let res = "\n"; let i = 0; logs.forEach((l) => { if ( i > 3 || l.includes("[skip]") || l.includes("[ignore]") || l.includes("caddy") || l.includes("renovate") ) { return; } i++; const s = l.split(" "); const date = new Date(s[0] * 1000).toLocaleDateString("en-US", { year: "numeric", month: "long", day: "numeric", }); res = res + `
  • ${date} - ${s.slice(1).join(" ")}
  • \n`; }); return res; } function TableViewTemplate(rows) { let table = ""; rows.forEach((row, key) => { row.rowNumber = key; table = table + TableRowTemplate(row); }); return table + "
    "; } function TableRowTemplate({ rowNumber, name, address, city }) { return ` ${name} ${address}, ${city} `; } readFile("./index.html", function (err, data) { const changeList = GetRecentChanges(); if (err) { throw err; } const $ = load(data); stores.sort(function (a, b) { var aname = a.name.toLowerCase(); var bname = b.name.toLowerCase(); return aname === bname ? 0 : +(aname > bname) || -1; }); $("#Stores").html(TableViewTemplate(stores)); $("#storeCount").html(stores.length); $("#updatedOn").html( new Date().toLocaleDateString("en-US", { year: "numeric", month: "long", day: "numeric", }) ); $("#changesList").html(ChangeLog(changeList)); const cssurl = $("link[type='text/css']").attr("href").split("?")[0]; $("link[type='text/css']").attr("href", cssurl + "?" + new Date().getTime()); writeFile("./index.html", $.html(), (err) => { if (err) throw err; console.log("Default view updated."); }); });