pages/site/git.data.ts
thepaperpilot ff8074b355
Some checks failed
Build and Deploy / build-and-deploy (push) Failing after 4m18s
Updated homepage
2024-06-18 10:31:39 -05:00

36 lines
2.3 KiB
TypeScript

const fs = require("fs");
const path = require("path");
const util = require('node:util');
const exec = util.promisify(require('node:child_process').exec);
export default {
watch: ['site/garden/**/*', 'site/now/**/*'],
async load(files: string[]): Record<string, string> {
const ret: Record<string, string> = {};
await Promise.all(files.map(e => new Promise<void>(async (resolve) => {
const firstCommit = (await new Promise(async (resolve, reject) => {
exec(`git log -n 1 --diff-filter=A --format="<a href='https://code.incremental.social/thepaperpilot/pages/commit/%H' title='%ad'><time class='dt-published' datetime='%ad'>%as</time></a>" -- ${e}`)
.then(output => resolve(output.stdout))
.catch(err => console.warn(`Error calculating first commit for ${e}:\n${err}`) || reject());
})) ?? "";
const lastCommit = (await new Promise(async (resolve, reject) => {
exec(`git log -n 1 --diff-filter=M --format="<a href='https://code.incremental.social/thepaperpilot/pages/commit/%H' title='%ad'><time class='dt-updated' datetime='%ad'>%as</time></a>" -- ${e}`)
.then(output => resolve(output.stdout))
.catch(err => console.warn(`Error calculating first commit for ${e}:\n${err}`) || reject());
})) ?? "";
ret[e] = `Planted ${firstCommit}.${lastCommit ? ` Last tended to ${lastCommit}.` : ''}`;
resolve();
})));
// Map pages just like build_garden does
ret['site/guide-to-incrementals/index.md'] = ret['site/garden/guide-to-incrementals/index.md'];
ret['site/guide-to-incrementals/design/criticism/index.md'] = ret['site/garden/guide-to-incrementals/navigating-criticism/index.md'];
ret['site/guide-to-incrementals/ludology/appeal-developers/index.md'] = ret['site/garden/guide-to-incrementals/appeal-to-developers/index.md'];
ret['site/guide-to-incrementals/ludology/appeal-gamers/index.md'] = ret['site/garden/guide-to-incrementals/appeal-to-players/index.md'];
ret['site/guide-to-incrementals/ludology/content/index.md'] = ret['site/garden/guide-to-incrementals/what-is-content/index.md'];
ret['site/guide-to-incrementals/ludology/definition/index.md'] = ret['site/garden/guide-to-incrementals/defining-the-genre/index.md'];
return ret;
}
};