package main
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"git.brettb.xyz/goinv/client/internal/app"
|
|
"git.brettb.xyz/goinv/client/internal/config"
|
|
"github.com/knadh/koanf/parsers/json"
|
|
"github.com/knadh/koanf/providers/env"
|
|
"github.com/knadh/koanf/providers/file"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
var envPrefix = "GOINV_CLI_"
|
|
|
|
func main() {
|
|
logger, err := zap.NewProduction()
|
|
defer logger.Sync()
|
|
|
|
logger.Info("loading configuration")
|
|
|
|
config.LoadConfig(file.Provider("config.json"), json.Parser())
|
|
config.LoadConfig(env.Provider(envPrefix, ".", func(s string) string {
|
|
return strings.Replace(strings.ToLower(
|
|
strings.TrimPrefix(s, envPrefix)), "_", ".", -1,
|
|
)
|
|
}), nil)
|
|
|
|
var cfg config.Config
|
|
|
|
err = config.Unmarshal(&cfg)
|
|
if err != nil {
|
|
logger.Panic("could not load config", zap.Error(err))
|
|
}
|
|
|
|
a := app.NewApp("goinv", "0.1.1", cfg.API.URL, logger)
|
|
|
|
if err := a.Run(); err != nil {
|
|
logger.Panic("application errored", zap.Error(err))
|
|
}
|
|
}
|