init render with markdown
parent
dbce3db5cf
commit
098beac960
|
@ -0,0 +1,14 @@
|
|||
# macOS
|
||||
.DS_Store
|
||||
|
||||
# Window
|
||||
*.exe
|
||||
|
||||
# IntelliJ
|
||||
.idea/
|
||||
|
||||
# VSCode
|
||||
.vscode/
|
||||
|
||||
# HTML
|
||||
generated/
|
|
@ -0,0 +1,18 @@
|
|||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Recursive:slnt,wght,CASL,CRSV,MONO@-15..0,300..800,0..1,0..1,0..1&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
|
||||
<style>
|
||||
body {
|
||||
font-family: "Recursive", sans-serif;
|
||||
font-variation-settings: "MONO" 0, "CASL" 1;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: "Recursive", monospace;
|
||||
font-variation-settings: "MONO" 1, "CASL" 1;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,5 @@
|
|||
module github.com/haunt98/posts-go
|
||||
|
||||
go 1.17
|
||||
|
||||
require github.com/gomarkdown/markdown v0.0.0-20211128002848-ab7d7bf476b3 // indirect
|
|
@ -0,0 +1,2 @@
|
|||
github.com/gomarkdown/markdown v0.0.0-20211128002848-ab7d7bf476b3 h1:TyhCPRkxLfBBOuOy8oambova4pG4Iivc0lTdTrkhN98=
|
||||
github.com/gomarkdown/markdown v0.0.0-20211128002848-ab7d7bf476b3/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
|
|
@ -0,0 +1,67 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/gomarkdown/markdown"
|
||||
"github.com/gomarkdown/markdown/html"
|
||||
)
|
||||
|
||||
const (
|
||||
postsPath = "posts"
|
||||
headHTMLPath = "custom/head.html"
|
||||
generatedPath = "generated"
|
||||
htmlExt = ".html"
|
||||
)
|
||||
|
||||
func main() {
|
||||
headHTML, err := os.ReadFile(headHTMLPath)
|
||||
if err != nil {
|
||||
log.Fatalln("Failed to read file", headHTML)
|
||||
}
|
||||
|
||||
files, err := os.ReadDir(postsPath)
|
||||
if err != nil {
|
||||
log.Fatalln("Failed to read dir", postsPath)
|
||||
}
|
||||
|
||||
if err := os.RemoveAll(generatedPath); err != nil {
|
||||
log.Fatalln("Failed to remove all", generatedPath, err)
|
||||
}
|
||||
|
||||
if err := os.MkdirAll(generatedPath, 0777); err != nil {
|
||||
log.Fatalln("Failed to mkdir all", generatedPath)
|
||||
}
|
||||
|
||||
for _, file := range files {
|
||||
if file.IsDir() {
|
||||
continue
|
||||
}
|
||||
|
||||
filePath := filepath.Join(postsPath, file.Name())
|
||||
md, err := os.ReadFile(filePath)
|
||||
if err != nil {
|
||||
log.Fatalln("Failed to read file", filePath)
|
||||
}
|
||||
|
||||
htmlFlags := html.CommonFlags | html.CompletePage | html.TOC
|
||||
htmlRendererOtps := html.RendererOptions{
|
||||
Title: file.Name(),
|
||||
Head: headHTML,
|
||||
Flags: htmlFlags,
|
||||
}
|
||||
|
||||
htmlRenderer := html.NewRenderer(htmlRendererOtps)
|
||||
generatedHTML := markdown.ToHTML(md, nil, htmlRenderer)
|
||||
|
||||
generatedFileName := strings.TrimSuffix(file.Name(), filepath.Ext(file.Name())) + htmlExt
|
||||
generatedFilePath := filepath.Join(generatedPath, generatedFileName)
|
||||
|
||||
if err := os.WriteFile(generatedFilePath, generatedHTML, 0666); err != nil {
|
||||
log.Fatalln("Failed to write file", generatedFilePath, err)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue