From 12dcbb460c933f79d2f21bc4eb4c0f0439ab5bad Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Fri, 25 Jul 2025 02:01:57 +1000 Subject: [PATCH] feat: add parseParams --- main.go | 11 +++++++---- params.go | 23 +++++++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 params.go diff --git a/main.go b/main.go index babc45f..c72ee05 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "log" ) var tmpl = ` @@ -27,8 +28,10 @@ func main() { if err != nil { panic(err) } - fmt.Printf("'%s'", templateMeta) - render(body, map[string]string{ - "from": "2025-07-15", - }) + fmt.Println(templateMeta) + ctx, err := parseParams(templateMeta) + if err != nil { + log.Fatal(err) + } + render(body, ctx) } diff --git a/params.go b/params.go new file mode 100644 index 0000000..65e4a36 --- /dev/null +++ b/params.go @@ -0,0 +1,23 @@ +package main + +import ( + "flag" + "fmt" +) + +func parseParams(meta TemplateMeta) (ctx TemplateContext, err error) { + result := make(map[string]*string) + for key, spec := range meta.Params { + result[key] = flag.String(key, spec.Default, key) + } + flag.Parse() + ctx = make(TemplateContext) + for key, spec := range meta.Params { + if spec.Required && *result[key] == "" { + err = fmt.Errorf("parameter '%s' required but not provided", key) + return + } + ctx[key] = *result[key] + } + return +}