Skip to content

Instantly share code, notes, and snippets.

View presmihaylov's full-sized avatar

Pres Mihaylov presmihaylov

View GitHub Profile
package loggerfx
// imports
// ProvideLogger to fx
func ProvideLogger() *zap.SugaredLogger {
logger, _ := zap.NewProduction()
slogger := logger.Sugar()
return slogger
...
// ProvideLogger to fx
func ProvideLogger() *zap.SugaredLogger {
logger, _ := zap.NewProduction()
slogger := logger.Sugar()
return slogger
}
func main() {
...
func main() {
fx.New(
configfx.Module,
...
).Run()
}
// example continued
// Module provided to fx
var Module = fx.Options(
fx.Provide(ProvideConfig),
)
package configfx
// imports
// ApplicationConfig ...
type ApplicationConfig struct {
Address string `yaml:"address"`
}
// Config ...
...
// ProvideConfig provides the standard configuration to fx
func ProvideConfig() *Config {
conf := Config{}
data, err := ioutil.ReadFile("config/base.yaml")
// handle error
err = yaml.Unmarshal([]byte(data), &conf)
// handle error
...
func main() {
fx.New(
...
fx.Invoke(registerHooks),
).Run()
}
func registerHooks(
lifecycle fx.Lifecycle,
...
// New http handler
func New(s *http.ServeMux, logger *zap.SugaredLogger) *Handler {
h := Handler{s, logger}
h.registerRoutes()
return &h
}
...
...
func main() {
fx.New(
fx.Provide(ProvideConfig),
fx.Provide(ProvideLogger),
fx.Provide(http.NewServeMux),
fx.Invoke(httphandler.New),
).Run()
}
...
func main() {
fx.New(
fx.Provide(ProvideConfig),
fx.Provide(ProvideLogger),
fx.Provide(http.NewServeMux),
).Run()
...
}