Add the dependency container

pull/6/head
Mickaël Menu 3 years ago
parent 24fa3409d0
commit 7c2e76a01c
No known key found for this signature in database
GPG Key ID: 53D73664CD359895

@ -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
}

@ -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)
}

Loading…
Cancel
Save