Files
mdsh/main.go
T

62 lines
1.0 KiB
Go

package main
import (
"errors"
"fmt"
"os"
)
var TMPL_EXAMPLE = `
---
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 main() {
tmpl, err := loadTemplate()
handleError(err)
frontmatter, body, err := parseDocument(tmpl)
handleError(err)
templateMeta, err := parseFrontmatter(frontmatter)
handleError(err)
ctx, err := parseParams(templateMeta)
handleError(err)
output, err := ctx.OutputFile(templateMeta)
handleError(err)
defer output.Close()
err = ctx.render(body, output)
handleError(err)
}
func loadTemplate() (string, error) {
if len(os.Args) < 2 {
return "", errors.New("Please input a markdown template file")
}
filename := os.Args[1]
dat, err := os.ReadFile(filename)
if err != nil {
return "", fmt.Errorf("Failed to open file: %w", err)
}
return string(dat), nil
}
func handleError(err error) {
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}