@@ -8,41 +8,50 @@ function useBasePath(): string {
88 return process . env . GITHUB_ACTIONS ? REPO_NAME : '' ;
99}
1010
11- function postsDirectory ( mdx_folder : string ) : string {
12- fs . readdir ( ( join ( process . cwd ( ) , mdx_folder ) ) , ( err ) => {
11+ function postsDirectory ( post_folder : string ) : string {
12+ fs . readdir ( ( join ( process . cwd ( ) , post_folder ) ) , ( err ) => {
1313 if ( err ) {
1414 console . error ( 'Error reading directory:' , err ) ;
1515 }
1616 } )
17- return join ( process . cwd ( ) , mdx_folder ) ;
17+ return join ( process . cwd ( ) , post_folder ) ;
1818}
1919
20- function getPostSlugs ( mdx_folder : string ) {
20+ // dual usage, call it directly to load MD format
21+ export function loadPost ( slug : string , post_folder : string ) {
22+ const ext = slug . endsWith ( ".mdx" )
23+ ? ".mdx"
24+ : slug . endsWith ( ".md" )
25+ ? ".md"
26+ : ".mdx" ; // default fallback
27+
28+ const realSlug = slug . replace ( / \. m d x ? $ / , "" ) . replace ( / \. m d $ / , "" ) ;
29+ const fullPath = join ( postsDirectory ( post_folder ) , `${ realSlug } ${ ext } ` ) ;
30+ return fs . readFileSync ( fullPath , "utf-8" ) ;
31+ }
32+
33+ function getPostSlugs ( post_folder : string ) {
2134 return fs
22- . readdirSync ( postsDirectory ( mdx_folder ) , { withFileTypes : true } )
35+ . readdirSync ( postsDirectory ( post_folder ) , { withFileTypes : true } )
2336 . filter ( entry => entry . isFile ( ) && entry . name . endsWith ( ".mdx" ) )
2437 . map ( entry => entry . name ) ;
2538}
2639
27- export function getPostBySlug ( slug : string , mdx_folder : string ) {
28- const realSlug = slug . replace ( / \. m d x ? $ / , "" ) ;
29- const fullPath = join ( postsDirectory ( mdx_folder ) , `${ realSlug } .mdx` ) ;
30-
31- const fileContents = fs . readFileSync ( fullPath , "utf8" ) ;
40+ export function getPostBySlug ( slug : string , post_folder : string ) {
41+ const fileContents = loadPost ( slug , post_folder ) ;
3242 const { data, content } = matter ( fileContents ) ;
33-
3443 const BASE_PATH = useBasePath ( ) ;
3544
3645 // Update URLs based on the environment
3746 data . coverImage = data . coverImage . startsWith ( BASE_PATH ) ? data . coverImage : `${ BASE_PATH } ${ data . coverImage } ` ;
3847 data . author . picture = data . author . picture . startsWith ( BASE_PATH ) ? data . author . picture : `${ BASE_PATH } ${ data . author . picture } ` ;
3948 data . ogImage . url = data . ogImage . url . startsWith ( BASE_PATH ) ? data . ogImage . url : `${ BASE_PATH } ${ data . ogImage . url } ` ;
4049
41- return { ...data , slug : realSlug , content } as Post ;
50+ return { ...data , slug : slug . replace ( / \. m d x ? $ / , "" ) , content } as Post ;
4251}
4352
44- export function getAllPosts ( mdx_folder : string ) : Post [ ] {
45- const slugs = getPostSlugs ( mdx_folder ) ;
46- const posts = slugs . map ( slug => getPostBySlug ( slug , mdx_folder ) ) ;
53+ export function getAllPosts ( post_folder : string ) : Post [ ] {
54+ const slugs = getPostSlugs ( post_folder ) ;
55+ const posts = slugs . map ( slug => getPostBySlug ( slug , post_folder ) ) ;
4756 return posts . sort ( ( post1 , post2 ) => ( post1 . date > post2 . date ? - 1 : 1 ) ) ;
4857}
0 commit comments