nyc-bookstores/index.js

85 lines
2.1 KiB
JavaScript
Raw Normal View History

import { load } from "cheerio";
import { readFile, writeFile } from "fs";
2023-10-12 01:37:28 +00:00
import process from "child_process";
2024-07-08 23:13:48 +00:00
import stores from "./stores.json" with { type: "json" };
2023-10-12 01:37:28 +00:00
function GetRecentChanges() {
const res = process
.execSync('git log -15 --pretty=format:"%ct %s"')
2023-10-12 01:37:28 +00:00
.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++;
2023-10-12 01:37:28 +00:00
const s = l.split(" ");
const date = new Date(s[0] * 1000).toLocaleDateString("en-US", {
year: "numeric",
month: "long",
day: "numeric",
});
res = res + `<li>${date} - ${s.slice(1).join(" ")}</li>\n`;
});
return res;
}
2023-03-07 22:56:58 +00:00
function TableViewTemplate(rows) {
let table = "<table>";
2023-03-07 22:56:58 +00:00
rows.forEach((row, key) => {
row.rowNumber = key;
table = table + TableRowTemplate(row);
});
return table + "</table>";
}
function TableRowTemplate({ rowNumber, name, address, city }) {
return `
<tr id="${rowNumber}" class="spotRow">
<td class="name">${name}</td>
<td>${address}, ${city}</td>
</tr>`;
}
readFile("./index.html", function (err, data) {
2023-10-12 01:37:28 +00:00
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;
});
2023-03-07 22:56:58 +00:00
$("#Stores").html(TableViewTemplate(stores));
$("#storeCount").html(stores.length);
2022-03-19 20:28:26 +00:00
$("#updatedOn").html(
new Date().toLocaleDateString("en-US", {
year: "numeric",
month: "long",
day: "numeric",
})
);
2023-10-12 01:37:28 +00:00
$("#changesList").html(ChangeLog(changeList));
const cssurl = $("link[type='text/css']").attr("href").split("?")[0];
2022-03-20 14:43:25 +00:00
$("link[type='text/css']").attr("href", cssurl + "?" + new Date().getTime());
writeFile("./index.html", $.html(), (err) => {
if (err) throw err;
console.log("Default view updated.");
});
});