From 79e38870c36e6d93cbef1365c54853972aed1da3 Mon Sep 17 00:00:00 2001 From: ray Date: Thu, 2 Jan 2025 22:30:03 -0600 Subject: [PATCH] feat: add commit property --- astro.config.ts | 5 +++-- bun.lockb | Bin 368562 -> 368940 bytes package.json | 2 ++ src/lib/blog/gitCommitRemarkPlugin.ts | 30 ++++++++++++++++++++++++++ src/lib/blog/utils.ts | 2 +- src/pages/thoughts/[id].astro | 6 ++++-- 6 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 src/lib/blog/gitCommitRemarkPlugin.ts diff --git a/astro.config.ts b/astro.config.ts index de16179..c63c1d6 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -9,11 +9,10 @@ import tailwind from "@astrojs/tailwind"; import playformCompress from "@playform/compress"; import { schema } from "./env.ts"; +import { gitCommitRemarkPlugin } from "./src/lib/blog/gitCommitRemarkPlugin.ts"; const { SITE } = loadEnv(process.env.NODE_ENV!, process.cwd(), ""); -console.log("SITE", SITE); - export default defineConfig({ site: SITE ?? "http://localhost:3000", output: "static", @@ -47,6 +46,8 @@ export default defineConfig({ }, markdown: { syntaxHighlight: "prism", + // @ts-ignore: incorrectly typed in @astrojs/markdown-remark + remarkPlugins: [gitCommitRemarkPlugin], }, redirects: { "/work": "/resume", diff --git a/bun.lockb b/bun.lockb index d9bee1838dbff5528eebdc53f27877d69a201154..396e65b03261ca680bc40e7a290531c8087d4191 100755 GIT binary patch delta 23226 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 Y2*(z?Jo)nAz)B8|r41cs#SSU^KbZhPaR2}S delta 23102 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 diff --git a/package.json b/package.json index f3a2b76..db91857 100644 --- a/package.json +++ b/package.json @@ -48,10 +48,12 @@ "@types/react": "^19.0.2", "husky": "^9.1.7", "lint-staged": "^15.2.11", + "mdast": "^3.0.0", "prettier": "^3.4.2", "prettier-plugin-astro": "^0.14.1", "react-compiler-runtime": "^19.0.0-beta-b2e8e9c-20241220", "typescript": "^5.7.2", + "unified": "^11.0.5", "vite": "^6.0.7", "wrangler": "^3.99.0" } diff --git a/src/lib/blog/gitCommitRemarkPlugin.ts b/src/lib/blog/gitCommitRemarkPlugin.ts new file mode 100644 index 0000000..0744d21 --- /dev/null +++ b/src/lib/blog/gitCommitRemarkPlugin.ts @@ -0,0 +1,30 @@ +import { execSync } from "node:child_process"; +import path from "node:path"; + +import type { Root } from "mdast"; +import type { Plugin } from "unified"; + +import { isDraft } from "./utils"; + +type RemarkPlugin = Plugin< + PluginParameters, + Root +>; + +export function gitCommitRemarkPlugin(): RemarkPlugin { + return (_tree, file) => { + const filepath = file.history[0].replace(process.cwd(), "").slice(1); + const draft = isDraft(filepath); + + if (draft) { + file.data.astro.frontmatter.commit = ""; + return; + } + + const commit = execSync(`git log -n 1 --pretty=format:%h -- ${path}`) + .toString() + .trim(); + + file.data.astro.frontmatter.commit = commit; + }; +} diff --git a/src/lib/blog/utils.ts b/src/lib/blog/utils.ts index 213790b..56f4ad6 100644 --- a/src/lib/blog/utils.ts +++ b/src/lib/blog/utils.ts @@ -1,4 +1,4 @@ -import { BLOG_CONTENT_POOL_PATH } from "lib/consts"; +import { BLOG_CONTENT_POOL_PATH } from "../consts"; const relativePath = BLOG_CONTENT_POOL_PATH.replace(process.cwd(), "").slice(1); diff --git a/src/pages/thoughts/[id].astro b/src/pages/thoughts/[id].astro index c362374..fadd14b 100644 --- a/src/pages/thoughts/[id].astro +++ b/src/pages/thoughts/[id].astro @@ -14,7 +14,7 @@ dayjs.extend(advancedFormat); const { entry } = Astro.props; -const { Content } = await render(entry); +const { Content, remarkPluginFrontmatter } = await render(entry); export const prerender = true; @@ -77,7 +77,9 @@ export async function getStaticPaths() { .toLowerCase() }

-

commit: aadcee0d

+

+ commit: {remarkPluginFrontmatter.commit} +