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
zcmeI4cYGC9-o|HcZXlrvB9IW8fC#ujdIF&ZkPcF$s4D_W2`nvyCM6W98j2AQqO2%3
z6i~rkL`4M!0mTJ$v0__MP_Q5(g24NI=Ki8rWqEf$>%0HFIiEav&hI(DQ|8Q>nKO6h
z%(~}GuijF6QLP#q*F9Rj?f$>anmd2_2j%X2{%F;u$!lJm@^O`YyQUX9)9#u+cdv-`
z6c#P+T`{zK))NzUCzcp~WB)N(Xgxt;&zrV4w_DjV{U0pudquF0!iC^3%X(fJ_-?a*
zt?w%l@mqVL?-j#u$s-30^}KJM`d)E(c*cl~;TdDHCSjxJ4o*r;7(~1jX@fFG+?YIelvggv_ljcY4k=QpM!aQ=
zFCS_4;c~uLp2Uw}ZAQTgk{EEDISVUBcm}MZ%2$ds=P2oF);4k{Mfsg3
zUCldUOe@uL?>79(p|6D#;2#nqekH2-LAT6?FG3#!m-M{sY5j>@h_JG1#32_}!847=
z7~f#*SwWMkMH+Ml)&_LAH0Ymc$FQ~c4`8d|Swk{MjvYM2yAHhq_UDy-uQdD_4ZF}=
zf4tnz#JIjA`c>LFqu|HuUubw@cWjpne6Mcqrip3sw-IZB?*+M=T}u3ZtY%nVZhEVf
z_!^9=hJm&DiWL8PH!;p{9={Gz8N#`nC#J;zh}8ruHn36|PQ89gTY#ms0=el;Q(`}q
zmAmPUCUJ~KIYqK$V*OmevskTzG_u5dj7rsCFetn=RwT_&Pl=z4rDjCZUdK|q{oM3B
zQ~itF(}n$Jv7H#kwR5MmO7kbXMn(MQ{#rLtbi{3hLUl^HlSTYy{xH|5DC%lA5sLqi
zG2Wb#O6K}KQsUDY;RCT^b5-YqSl0$=^hf+1lL0GQacPJJGK4_4c}^5Q?m`nfx6a6q*rja`lBFf4UotealSPmME+
z&ZUOWu(UA+f)-a~)T@+8TY6$eTCDb8#F3;@!a?VC#~KjiQw>jATD(e$Ex{4WXh=(o
z9ZGCKZqt5E;)tjk_90_0%t0C%iPPDvmRRcDnB4T{De-ri6=}k|SlSRj*hkekSk=9F
zzM2|mMkrT>EW_$SQe@W_y*N^2FbrcmW3|gY{c>9Dl1QvYTKs-uoa(ftsz*d>ry#3}74w;ase8I(nQF<=91Tu5)9*OuX9BH86`-
z@XK7RSU3G6M6=ww1K%xg>{rZIt-XPQSjl~iuQt90R*2?U?CS$H!pheVsJsEj^k5Lg
zN*@?81C~9A>qQ_D@#4UUz>2UOMw%^_JqoCTOi&O^1PaltUg1m?_)jsO3M>4UslNaT
zHwVcPRt2-o7OTK{Kn<7=6rx%BErA+g<{~(z$X4L97b61_gdxY69lc5$K%hgYXk)Bd7vSvH{mH2eI^ISOs2gx>(WLW{a7c
zd5uhOY`Rz*&=l4#Y-PGw(bi^XE26IGXu|ne1$HsNXjVhJqcg$qa$pU*mFD-qaOrb9
zy8X@lia{qmL^&$zVJlCp=qmkl$^lh?=~M6>$uF?8`0=C{uL#EPyrJDQnO
zd)v^JZ#%5bf5q%wFn``_zMV&j1P*&FVXsmNV(oypU={R^rN3+TezV_)6~sCpe`>Z^
z`3{;b)`&Y|_7UGTPWKB1o$!@uVnx3;TdaL_4A#CrW%~J88+!&nxt=vvLsU)}R(e6>
zLLoXq8(ADd8A`zXc_sDFSQ*Qho(RjYEUbdc!#Y7!hZV$%)-*esHQMW;D}Q}UuOFh6
z7`N*ZMuVhArk{(Iud$^^v-C96#p>i1u-e@k=ElhD3d^sX={?Qv1uMYWfkSVE5(q=g
z@lWPB+;{}cpEt@l6Xs6Mn<3Fy9Wx7C4VY(~W4stv`t7h9v;Em{c^yfRLnm_(>q6Gk
z>}Zx>FVoM*^6PDWV%2kv*0))=D$^e^T`YZ#+0m>9KW4gE
zym5R>~SZi+VP52CzkyxtaiO-yxY>x#q!@{>0)jF
z8)l1@{&%y*>d$vH#MGXTEa6(V#%oeNSugw-~gN~a1ZE%Pq
ze2buloP;$e3YurEmd5f=1r;zZ2&_Z8W{YFolrDZnx4MfTr!$qOvVP4fvl+U$g{6yiTy!y8tn{w18rcoj
z)g;60p_cw9Sl8PuSZAOqX3vV{M?PhojUb)_Yy943j(5QdVim9wmf!ubl2-9gz5W=i
zyN+kzI9Ifu4bQFeA)Jeq?G@71SFgdkr+6P$@gG<|vFs0F_4OyP{6DjFv7(3hr}VFl
zkHs=PC7eJ|hEtYs7FG~zuNR{gs^EfP=tNi@TEgsTR@TzyU&hkKy7#ULtDa;_uT=n5
zLLC$8!k$~xm8qfXt8a1x$%JTD{VA573aejRn|%eW^tP~qSmm`dJDTO!0bT9B($Zo5
zs{0G!H?|7wY8k}ZjvlZI>}lNF(#5_j-@tbGH6};1eqtGA`u`yZ2h#6akp@r}4c9=K
z2`9pL+lKs>BlVxhf!yaU;6F^y{--Vb=LKs|FDIY&@CsP=y~g)hdFNtHn^s$T9%m~e
zZ5{tKRGu{ct3-lWWAPc&H^Hj#IpgO|-)#04SV1hm7tQ`BoEg5
z`gTj-Y4$5-?=t%}vv-@l2Udt?o$22~*9Pqm(%Juts4G9T4Ci7s;3M<<#QdUJ=?Boo
zpBjG#tINMJf3XJVcd#08Qntq58FLV;fU{lai&MJ{Nqg*tGvQy
zi-RfG1w_=cl9mw7Dmc;fe}&bP<*d9)uo`f&G_Z1)C&YXl2fnbKZ;vHFDR@4>XDT|1NDBO
zAeNs0D2_*Rkz<`m&_(%=;_@HG1<&sCAI0TAisPIR{Rj>-u=5|q(GmHN;`B&P^U(Z9
zaXK)9M{}A+=Rb``9+qqzJ>altb=
z9UXc$_g~}uM{)U&;uvgtG^bIQ|0pj1QC$9`IM2&}6c=29@*lA_m$*__6}Pmki}B=+(*B=!nDnbhLtst;ywPn~@9)(OdJIiuHq
zzp3@2zwYzyNm)PZ!nadT-`;lc;JyvJp6R#x{qHOG-2dL>FUJ0*(aJqb`<*@d_4QYG
z483&R70nDKxLu<|9sM+ym>KHrwr7Tlx+$3mP2CO&6UHDUk3neeCXPX
z;}P0TKsYU-vui&A;e>=W6A-R+KS+3ZBEoeO5xTim6A}8{gi!P*gdXndn-JnAA#9S+
z)5T9hcuKrjF2z|VV8t!UE&mk?GmO;LAcKCkT78?Lh@7u
zRxM9OsGg0mUqXLZBOBo@2|3vaH@LSY%$U4x75(c|Q(-96zSUw#g
z!yS^abOu7_83@DNoih;H%|tjYVYq8Q6XAq}H8T-Lx*sGwd^5szHzSO8t8PZRAYJvk^8)80+F^BRnNx_-usnZli=Da}dhUL73<=<{%`@Mc5@_l1rS6uwBBG
zxd>C-4ha+Hg^Iaa^Fkf`Y&UTpLiPE0?4O6nbXQ|O!dnt@<|E8>Z%dea3qsRd5N5e~
zw;-h6if}~29M|Ypgo6^6--j-UH@qwt36
zdqN4mf1gX=8%pyhZJ4q*)HWtISSIhL?+w+HkAG}~zb~|Rt^0aes7|4T*^!@iUdVC#
zZ;olMRdQ#}Mgmc9b-=2J2JwT9!gV`&~zQ^?I&CoN2ndh#d30B4C={OVA55
z3Wd=0GoyZa)hoaXMa+-q^InxeVG)J-=}j}PAd#nh`l(i@5&eSyuu32lH%%`^B-*7$
ziz(Cy-Sf3j?SxCsPp?pYM=LSC>ZWPM#v!$wP{TC6TbK7PYE8Ywu8MUVJsU^)UWTK#
zM7=WKGACPRy?T3#X|+sKPc1M_>nc>9-WOYFn$}RLJne)73~fw36Saje
z6IaMvXrUi0-!MNdx{$560N*yhPOvK0?)cC&Em@FO7JO$~7t@l^wt-+8bES#eZ)<_}
zS64K(x;%IeC}@#`3akJ&OCadiRB08#5!-cFnN|ty3MCSHnszbqt@vsG_sUxpQW>MW
zbxm(`tb(@I3haZX##9B5nRbo&U4r(wY1f)xH8i~}s&Jk8T}oWP%xIkSMN{up*Z4bZ
zj^oU+1_`}swZ_DF(`phQWZDEYb^m2x8F_!>pu!a%h1GMlfyRKsYSZcv*PHeVYfP(4{4{ax|Fy8ns|SJ+4Lxpt^@;n|
zz$egxHx(No?f@DT>nw9a;u%0=;z`S#LcASN_={<`hhx4%qlgnit0$p+IJqiHc`
zCHN`RSfH8hO~R;xxY5KW#3!5fv}t^4zL#>6JmS`c4v
zTHbnvbTqxj8N6li0*>mgmf%xqge_?5rB>hzJJD>j0$Zc)GEIl6cGDH$BGa~;)&{MN
zX**2Qn?s4F?L^c1xS&h*Q@RG;tFQ)0d!Pjd8YrK@s-y$ZPxTrn2Vgb2BWOrmqK0;PGjPrX`P8TC9ZJDv@XQ6<*5DtxrtX2*V}puUzpaFxEj*}K5SYy;oVW_s
zp{6$U1&e_SK4aST#B)tMYg#|-J3tT^SjyWUq-ze8IQSl%
z06&0}Krg|L1>?YYPzEHpZ*pSlWmhA5DJTI-0$q92K}*m|dknMzZ9zNG0dxX-v%NXc
z>-)!m-tX7i09}zk2U=+GCeYRRW-trP1@nL|yt>flXc2<0uDY7)>Z#==Q@~W9*AaE}
z>S%otyaaSa>d4Z8v;`+lUhq2jJJ<)_1aARdMBf4Lf&Jh^@DcbJd=lfTEsUv<
ztud}Kt>LO+r(vdHbsT6Y{Qxw2y3&_h*;iY@YOn@82G)V~;7PCnJOws_XTY;S*VxTK
zuUQrWMSuwKl70~OwYk;o1y3Xpl`UL2ytL6$KTFU*N@7gSi>05Le_FbS2tzPV&
zSQOJX`+hp$0Wb=AG{^*FfX-4nE9qF&>*^grC(s#m0i}UngHHoZKr_%Bv;gU#C1?fo
z3VlORAJhbwf!8SWZ(z6HpWQ=bFL>QeUmR1V{C=YEgYJyN9^fj_6Z8gs+}6c06^r#J
zIsgm=gJRvu#q8^9bl0WeD9}pfrQl9*7trGMZ@><)6FdVpf#<bN;af@agUxIhQyWl;rAAA6IhnZeIMntC+otkuZ&6ccH4|ikv0xk+
z4<>-JjQu2_H;s#f5}*(Wg94x+(0kFx!3pqT0Z!w3G5dY+0q8_!cT>=Epf|n$2Hv1?
zT6H%YZ4Q_VZlYm-C2a%H{6g23dtqG}yTRQ7%PG9}pfyMa%_zG$XaOz<^+0`1qZ)vQ
zfG;C?eDuq^5b%92F9c%2rxf}z_y;IJK?Ok^C=7~#lZ?QF;1JN9Lvsu*?imKs8F?+i
zA3!Z|InY-LYJl&-#V7c83Y-Odz+Uh=cmw<$>~sB>#FVM=IMFA7u7*Acfgfp`zC2J0
zlm^6+tDSFSqdVwBU;_hw#-j
zYC~1Jx)_dM!3V(WU<4QmMuE|wjqC5Yjqk*c>kR6H2H+#g`UGh9v>)6DR)Pn>%U}n1
z9&842;8Kdxqcg2+yBL%Q6~I8+F#xKD6dNOGBOmFM!Qp
z3pfgvgB4&7&?hbi>U$TTlOYRZEEo?afXSdJC#eLDV^fINF7X@(?k|4cDysvZ!2T9!38U5_e#t)7
zCwP=!Q~MS`)A?Mm1RNmGG59->PTB*oe6=wxWB3`W`kzq=+n)}m>kSmY2I(rGOK4}H
zLsBQX#z2kJNlus2dO%ma?>4kw9y6?Lc2n$1*iB#!O8r8j6J!Ulkw&Tk+Ne8-tFceR
z1MpF!b%|~bXjCv^kiXJ2ST#er0&W9Zp|yo|IoCkSyTo_Zoshl)(*yAZGAOPM=m~m(
zt3hwj2P^~{Q5q`O0{PuSo^=%7-|Xw)KbqbTz8>@i1HeFVBe($!0)xR)efmn5V+~hL
zQdFoKG7KIHQfZK`QaS_*z-pk<)Pq^@D4>r(X#%4kI&YT`@!_C3J|p2wFdAqgq`Fkc
z1n@EG<2A6yfr%j4BE$v6X9JBbX&U(Qn`*YSS>R?c6U+e9f%F_O2h0a^L0%8cBYrEm
z1*m7`tMPWBBHH2;PZJ@;jdfc##=KWH?~}NBpE8Z}`_`*fyH;(6;h&$58B%xbh>SrQ
z18?*WwT?U9cWbdpI-N(txQwiUid7G16mJ`UasoLUk~3vPg=b>kdDP$Qei#()?B}|+
zgTwXwyWOP0;Y9yIw?x)aw_|X4u)ovQ8G^XabrcK504fDRC
zdwl7#M~2*+9v|}i)`>JP?|ZtF4iDZn_rfnKhx|IV>eQ;2LW4@VKWBsog({YI1%|?Y
z88>2RI3X$T3%UnhnSA?I{hxS`vg$_4`qte$lsZ3iUk#5`_J%K~0UI*+8V8Sbu;;ly%zALu=NV!;0EOUBhF
zTm8sZm#^e@j|?YR>)eFl;j(%jJFgw(8^8KHq)Qr@Qku
zn?X{=eK{(e5Gql{#f=Wv28#$V`-QYF_epMsi
z?A`h1tp%6XoAg}JHg+T9-F<@tqo;5tw9;LY8LrnL?^C>UcGgVWa%M&f?kSN?$@{49
zSH<6UZ%mk`g6LL_;$tpHC7f{&Wm0bk_g!ZAvMTRh`pa+qP8+bHV~2u|OjSE;F(#Pa
zxmIJs(+l+(%SDHfFy6g3CagK~hGJRaEqTubA`B*zksT#>Qq{;1VmxCb<`0
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}
+