Files
mdsh/main.go
T

60 lines
1000 B
Go

package main
import (
"fmt"
"log"
"os"
)
var tmpl = `
---
output: "reports/${from}.md"
params:
from:
required: true
file:
default: "ledger.j"
---
Hello this is the text:
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 {
log.Fatal(err)
}
templateMeta, err := parseFrontmatter(frontmatter)
if err != nil {
log.Fatal(err)
}
fmt.Println(templateMeta)
ctx, err := parseParams(templateMeta)
if err != nil {
log.Fatal(err)
}
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)
}
}