Bump script ver and refactor md metadata gen
Signed-off-by: Paul W. <lambdapaul@protonmail.com>
This commit is contained in:
		@@ -1,16 +1,28 @@
 | 
			
		||||
import Layout from '../../components/layout';
 | 
			
		||||
import { getAllPosts, getPost } from '../../lib/slug';
 | 
			
		||||
import ReactMarkdown from 'react-markdown';
 | 
			
		||||
import style from '../../styles/post.module.css';
 | 
			
		||||
import PostsInfo from '../../public/posts.json';
 | 
			
		||||
import readMarkdown from '../../lib/read-markdown';
 | 
			
		||||
 | 
			
		||||
function Post({ post }: any) { // eh
 | 
			
		||||
interface Post {
 | 
			
		||||
    title: string;
 | 
			
		||||
    mtime: string;
 | 
			
		||||
    otime?: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface Posts {
 | 
			
		||||
    [slug: string]: Post
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function Post({ post }: { post: Post & { content: string, cover?: string } }) {
 | 
			
		||||
    return (<>
 | 
			
		||||
        <Layout removeContainer={true} name={post.title} title={post.title} ancestors={[{ name: 'Posts', path: 'posts' }]}>
 | 
			
		||||
            {<div className={style.imageBlock} 
 | 
			
		||||
                style={{ backgroundImage: 
 | 
			
		||||
                    post.cover ? 
 | 
			
		||||
                        `url(/assets/images/${post.cover})` : 
 | 
			
		||||
                        'linear-gradient(to bottom right, #565a0f, #08432c 15%, rgb(5, 39, 10) 40%, rgb(0, 22, 46) 80%)'
 | 
			
		||||
        <Layout removeContainer={true}  >
 | 
			
		||||
            {<div className={style.imageBlock}
 | 
			
		||||
                style={{
 | 
			
		||||
                    backgroundImage:
 | 
			
		||||
                        post.cover ?
 | 
			
		||||
                            `url(/assets/images/${post.cover})` :
 | 
			
		||||
                            'linear-gradient(to bottom right, #565a0f, #08432c 15%, rgb(5, 39, 10) 40%, rgb(0, 22, 46) 80%)'
 | 
			
		||||
                }}></div>}
 | 
			
		||||
            <div className={style.spacer}></div>
 | 
			
		||||
            <section className={`${style.block} block`}>
 | 
			
		||||
@@ -25,20 +37,24 @@ function Post({ post }: any) { // eh
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function getStaticProps({ params }: any) {
 | 
			
		||||
    const post = getPost(params.post);
 | 
			
		||||
 | 
			
		||||
    const postsInfo: Posts = PostsInfo;
 | 
			
		||||
    const post: Post = postsInfo[params.post];
 | 
			
		||||
    return {
 | 
			
		||||
        props: { post }
 | 
			
		||||
    };
 | 
			
		||||
        props: {
 | 
			
		||||
            post: {
 | 
			
		||||
                ...post,
 | 
			
		||||
                content: await readMarkdown('posts', params.post, true)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function getStaticPaths() {
 | 
			
		||||
    const posts = getAllPosts();
 | 
			
		||||
    return {
 | 
			
		||||
        paths: posts.map((post: any) => {
 | 
			
		||||
        paths: Object.keys(PostsInfo).map((post: string) => {
 | 
			
		||||
            return {
 | 
			
		||||
                params: {
 | 
			
		||||
                    post: post.slug
 | 
			
		||||
                    post
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }),
 | 
			
		||||
 
 | 
			
		||||
@@ -1,47 +1,53 @@
 | 
			
		||||
import Link from 'next/link';
 | 
			
		||||
import Layout from '../../components/layout';
 | 
			
		||||
import date from '../../lib/date';
 | 
			
		||||
import { getPostsMeta, IPostMeta } from '../../lib/slug';
 | 
			
		||||
import PostsInfo from '../../public/posts.json';
 | 
			
		||||
 | 
			
		||||
function PostsPage({ postsMeta }: { postsMeta: IPostMeta[] }) {
 | 
			
		||||
    return ( 
 | 
			
		||||
        <Layout name='Posts'>
 | 
			
		||||
            <table>
 | 
			
		||||
                <tbody>
 | 
			
		||||
                {
 | 
			
		||||
                    postsMeta.length &&
 | 
			
		||||
                    postsMeta.map((post: IPostMeta, i) => {
 | 
			
		||||
                        return <tr key={i} style={{alignItems: 'center'}}>
 | 
			
		||||
                            <td style={{display: 'inline-block', textAlign: 'right', fontSize: '0.9rem'}}>
 | 
			
		||||
                                <div style={{fontStyle: 'italics', fontSize: '.8rem'}}>{
 | 
			
		||||
                                    post.last_updated && `updated ${date.toRelativeDate(new Date(post.last_updated))}`
 | 
			
		||||
                                }</div>
 | 
			
		||||
                                <div>{ date.toRelativeDate(new Date(post.created_at)) }</div>
 | 
			
		||||
                            </td>
 | 
			
		||||
                            <td style={{
 | 
			
		||||
                                flex: '1 1 60%', 
 | 
			
		||||
                                alignItems: 'center',
 | 
			
		||||
                                fontFamily: `'EB Garamond', 'Garamond', 'Times New Roman', Times, serif`}}>
 | 
			
		||||
                                <Link href={`/posts/${post.slug}`}  style={{textDecoration: 'none'}}>{post.title}</Link>
 | 
			
		||||
                            </td>
 | 
			
		||||
                        </tr>
 | 
			
		||||
                    }) || 
 | 
			
		||||
                    <div className='text center'>
 | 
			
		||||
                        <div>**crickets**</div>
 | 
			
		||||
                        <div>No posts found...</div>
 | 
			
		||||
                        <div><Link href='/' className='link button green back'>Go Home</Link></div>
 | 
			
		||||
                    </div>
 | 
			
		||||
                }
 | 
			
		||||
                </tbody>
 | 
			
		||||
            </table>
 | 
			
		||||
function PostsPage() {
 | 
			
		||||
    return (
 | 
			
		||||
        <Layout>
 | 
			
		||||
            {Object.keys(PostsInfo).length && <Posts /> || <NoPosts />}
 | 
			
		||||
        </Layout>
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function getStaticProps() {
 | 
			
		||||
    return {
 | 
			
		||||
        props: { postsMeta: getPostsMeta() }
 | 
			
		||||
    };
 | 
			
		||||
function NoPosts() {
 | 
			
		||||
    return (<><div className='text center'>
 | 
			
		||||
        <div>**crickets**</div>
 | 
			
		||||
        <div>No posts found...</div>
 | 
			
		||||
        <div><Link href='/' className='link button green back'>Go Home</Link></div>
 | 
			
		||||
    </div></>);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function Posts() {
 | 
			
		||||
    const posts = Object.entries(PostsInfo);
 | 
			
		||||
    return (
 | 
			
		||||
        <>
 | 
			
		||||
            <table>
 | 
			
		||||
                <tbody>
 | 
			
		||||
                    {
 | 
			
		||||
                        posts.map(([slug, post]: any, i: number) => {
 | 
			
		||||
                            return <tr key={i} style={{ alignItems: 'center' }}>
 | 
			
		||||
                                <td style={{ display: 'inline-block', textAlign: 'right', fontSize: '0.9rem' }}>
 | 
			
		||||
                                    <div style={{ fontStyle: 'italics', fontSize: '.8rem' }}>{
 | 
			
		||||
                                        post.mtime && `Updated ${date.toRelativeDate(new Date(post.mtime))}`
 | 
			
		||||
                                    }</div>
 | 
			
		||||
                                    <div>{date.toRelativeDate(new Date(post.otime))}</div>
 | 
			
		||||
                                </td>
 | 
			
		||||
                                <td style={{
 | 
			
		||||
                                    flex: '1 1 60%',
 | 
			
		||||
                                    alignItems: 'center',
 | 
			
		||||
                                    fontFamily: `'EB Garamond', 'Garamond', 'Times New Roman', Times, serif`
 | 
			
		||||
                                }}>
 | 
			
		||||
                                    <Link href={`/posts/${slug}`} style={{ textDecoration: 'none' }}>{post.title}</Link>
 | 
			
		||||
                                </td>
 | 
			
		||||
                            </tr>
 | 
			
		||||
                        })}
 | 
			
		||||
                </tbody>
 | 
			
		||||
            </table>
 | 
			
		||||
        </>
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
export default PostsPage;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user