Files
mdsh/main.go
T

64 lines
1.1 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)
data := render(body, ctx)
output, err := templateMeta.OutputFile(ctx)
handleError(err)
err = os.WriteFile(output, data, 0644)
handleError(err)
fmt.Printf("Result saved to %s\n", output)
}
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)
}
}