feat: input and output file

This commit is contained in:
Justin Lin committed 2025-07-25 02:30:09 +10:00
1 parent 12dcbb460c
commit 3eae45479b
6 files changed
+64 -18

No files matched your search

+25 -3
View File
@@ -3,6 +3,7 @@ package main
import (
"fmt"
"log"
"os"
)
var tmpl = `
@@ -19,19 +20,40 @@ Start from {{ .from }}
{{ sh "hledger bal assets -b $from" }}
`
func loadTemplate() string {
if len(os.Args) < 2 {
log.Fatal("Please input a markdown template file")
}
filename := os.Args[1]
dat, err := os.ReadFile(filename)
if err != nil {
log.Fatal("Failed to open the file", err)
}
return string(dat)
}
func main() {
tmpl := loadTemplate()
frontmatter, body, err := parseDocument(tmpl)
if err != nil {
panic(err)
log.Fatal(err)
}
templateMeta, err := parseFrontmatter(frontmatter)
if err != nil {
panic(err)
log.Fatal(err)
}
fmt.Println(templateMeta)
ctx, err := parseParams(templateMeta)
if err != nil {
log.Fatal(err)
}
render(body, ctx)
data := render(body, ctx)
output, err := templateMeta.OutputFile(ctx)
if err != nil {
panic(err)
}
err = os.WriteFile(output, data, 0644)
if err != nil {
panic(err)
}
}