From 7c2e76a01caa0eda14c91e5ccf2de9f44f198526 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mickae=CC=88l=20Menu?= Date: Mon, 28 Dec 2020 13:15:56 +0100 Subject: [PATCH] Add the dependency container --- cmd/container.go | 40 ++++++++++++++++++++++++++++++++++++++++ main.go | 19 ++++--------------- 2 files changed, 44 insertions(+), 15 deletions(-) create mode 100644 cmd/container.go diff --git a/cmd/container.go b/cmd/container.go new file mode 100644 index 0000000..069500a --- /dev/null +++ b/cmd/container.go @@ -0,0 +1,40 @@ +package cmd + +import ( + "log" + "os" + + "github.com/mickael-menu/zk/adapter/handlebars" + "github.com/mickael-menu/zk/core/zk" + "github.com/mickael-menu/zk/util" + "github.com/mickael-menu/zk/util/date" +) + +type Container struct { + Zk *zk.Zk + Date date.Provider + Logger util.Logger + renderer *handlebars.HandlebarsRenderer +} + +func NewContainer() *Container { + zk, _ := zk.Open(".") + date := date.NewFrozenNow() + + return &Container{ + Zk: zk, + Logger: log.New(os.Stderr, "zk: warning: ", 0), + // zk is short-lived, so we freeze the current date to use the same + // date for any rendering during the execution. + Date: &date, + } +} + +func (c *Container) Renderer() *handlebars.HandlebarsRenderer { + if c.renderer == nil { + // FIXME take the language from the config + handlebars.Init("en", c.Logger, c.Date) + c.renderer = handlebars.NewRenderer() + } + return c.renderer +} diff --git a/main.go b/main.go index 54cde9f..b15bd7b 100644 --- a/main.go +++ b/main.go @@ -1,13 +1,8 @@ package main import ( - "log" - "os" - "github.com/alecthomas/kong" - "github.com/mickael-menu/zk/adapter/handlebars" "github.com/mickael-menu/zk/cmd" - "github.com/mickael-menu/zk/util/date" ) var cli struct { @@ -16,16 +11,10 @@ var cli struct { } func main() { - logger := log.New(os.Stderr, "zk: warning: ", 0) - // zk is short-lived, so we freeze the current date to use the same date - // for any rendering during the execution. - date := date.NewFrozenNow() - // FIXME take the language from the config - handlebars.Init("en", logger, &date) + // Create the dependency graph. + container := cmd.NewContainer() - ctx := kong.Parse(&cli, - kong.Name("zk"), - ) - err := ctx.Run() + ctx := kong.Parse(&cli, kong.Name("zk")) + err := ctx.Run(container) ctx.FatalIfErrorf(err) }