From 943bda59e157bff7ad2955704a5e3da331dd3051 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Jochum?= Date: Wed, 21 Sep 2022 04:41:49 +0200 Subject: [PATCH] Do not use go-micro.dev/v4/config --- cmd/microrouterd/config/config.go | 56 --------------------- cmd/microrouterd/handler/handler.go | 7 ++- cmd/microrouterd/main.go | 71 +++++++++++++++++++-------- go.mod | 7 +-- go.sum | 19 +------- internal/config/load.go | 75 ----------------------------- internal/util/env.go | 12 +++++ 7 files changed, 70 insertions(+), 177 deletions(-) delete mode 100644 internal/config/load.go create mode 100644 internal/util/env.go diff --git a/cmd/microrouterd/config/config.go b/cmd/microrouterd/config/config.go index 05a58a1..2eb61e1 100644 --- a/cmd/microrouterd/config/config.go +++ b/cmd/microrouterd/config/config.go @@ -8,59 +8,3 @@ const ( Name = "go.micro.router" PkgPath = "jochum.dev/jo-micro/router" ) - -const ( - EnvDev = "dev" - EnvProd = "prod" -) - -type Config struct { - Router RouterConfig - Auth AuthConfig -} - -type RouterConfig struct { - Env string - Address string - RouterURI string - RefreshSeconds int -} - -type TokenKeys struct { - PubKey string -} - -type AuthConfig struct { - AccessToken TokenKeys - RefreshToken TokenKeys -} - -func GetConfig() *Config { - return &_cfg -} - -func GetRouterConfig() RouterConfig { - return _cfg.Router -} - -func GetAuthConfig() AuthConfig { - return _cfg.Auth -} - -// internal instance of Config -var _cfg = Config{ - Router: RouterConfig{ - Env: EnvProd, - Address: ":8080", - RouterURI: "router", - RefreshSeconds: 10, - }, - Auth: AuthConfig{ - AccessToken: TokenKeys{ - PubKey: "", - }, - RefreshToken: TokenKeys{ - PubKey: "", - }, - }, -} diff --git a/cmd/microrouterd/handler/handler.go b/cmd/microrouterd/handler/handler.go index a47d170..8be5121 100644 --- a/cmd/microrouterd/handler/handler.go +++ b/cmd/microrouterd/handler/handler.go @@ -14,8 +14,7 @@ import ( "go-micro.dev/v4/client" "go-micro.dev/v4/errors" "google.golang.org/protobuf/types/known/emptypb" - "jochum.dev/jo-micro/auth2" - "jochum.dev/jo-micro/router/cmd/microrouterd/config" + auth "jochum.dev/jo-micro/auth2" iLogger "jochum.dev/jo-micro/router/internal/logger" "jochum.dev/jo-micro/router/internal/proto/routerclientpb" "jochum.dev/jo-micro/router/internal/proto/routerserverpb" @@ -41,7 +40,7 @@ func NewHandler() (*Handler, error) { }, nil } -func (h *Handler) Init(service micro.Service, engine *gin.Engine, routerAuth auth.RouterPlugin) error { +func (h *Handler) Init(service micro.Service, engine *gin.Engine, routerAuth auth.RouterPlugin, refreshSeconds int) error { h.service = service h.engine = engine h.routerAuth = routerAuth @@ -97,7 +96,7 @@ func (h *Handler) Init(service micro.Service, engine *gin.Engine, routerAuth aut } } - time.Sleep(time.Duration(config.GetRouterConfig().RefreshSeconds) * time.Second) + time.Sleep(time.Duration(refreshSeconds) * time.Second) } }() diff --git a/cmd/microrouterd/main.go b/cmd/microrouterd/main.go index 208ad7b..7afdc30 100644 --- a/cmd/microrouterd/main.go +++ b/cmd/microrouterd/main.go @@ -1,5 +1,3 @@ -// -lang=go1.19 - package main import ( @@ -17,22 +15,32 @@ import ( "jochum.dev/jo-micro/router/cmd/microrouterd/config" "jochum.dev/jo-micro/router/cmd/microrouterd/handler" - iConfig "jochum.dev/jo-micro/router/internal/config" iLogger "jochum.dev/jo-micro/router/internal/logger" "jochum.dev/jo-micro/router/internal/proto/routerserverpb" + "jochum.dev/jo-micro/router/internal/util" ) func internalService(routerHandler *handler.Handler) { srv := micro.NewService() + flags := []cli.Flag{ + &cli.StringFlag{ + Name: "router_basepath", + Usage: "Router basepath", + EnvVars: []string{"MICRO_ROUTER_BASEPATH"}, + Value: "router", + }, + } + opts := []micro.Option{ micro.Name(config.Name + "-internal"), micro.Version(config.Version), + micro.Flags(flags...), micro.Action(func(c *cli.Context) error { routerserverpb.RegisterRouterServerServiceHandler(srv.Server(), routerHandler) r := router.NewHandler( - config.GetRouterConfig().RouterURI, + c.String("router_basepath"), router.NewRoute( router.Method(router.MethodGet), router.Path("/routes"), @@ -62,30 +70,47 @@ func main() { micro.Server(httpServer.NewServer()), ) - if err := iConfig.Load(config.GetConfig()); err != nil { - logger.Fatal(err) - } - - if config.GetRouterConfig().Env == config.EnvProd { - gin.SetMode(gin.ReleaseMode) + authReg := auth2.RouterAuthRegistry() + + flags := []cli.Flag{ + // General + &cli.BoolFlag{ + Name: "router_debugmode", + Usage: "Run gin in debugmode?", + EnvVars: []string{"MICRO_ROUTER_DEBUGMODE"}, + Value: false, + }, + &cli.StringFlag{ + Name: "router_basepath", + Usage: "Router basepath", + EnvVars: []string{"MICRO_ROUTER_BASEPATH"}, + Value: "router", + }, + &cli.IntFlag{ + Name: "router_refresh", + Usage: "Router refresh routes every x seconds", + EnvVars: []string{"MICRO_ROUTER_REFRESH"}, + Value: 10, + }, + &cli.StringFlag{ + Name: "router_listen", + Usage: "Router listen on", + EnvVars: []string{"MICRO_ROUTER_LISTEN"}, + Value: ":8080", + }, } + flags = append(flags, iLogger.Flags()...) + flags = append(flags, authReg.Flags()...) - r := gin.New() routerHandler, err := handler.NewHandler() if err != nil { logger.Fatal(err) } - authReg := auth.RouterAuthRegistry() - - flags := []cli.Flag{} - flags = append(flags, iLogger.Flags()...) - flags = append(flags, authReg.Flags()...) - opts := []micro.Option{ micro.Name(config.Name), micro.Version(config.Version), - micro.Address(config.GetRouterConfig().Address), + micro.Address(util.GetEnvDefault("MICRO_ROUTER_LISTEN", ":8080")), micro.Flags(flags...), micro.Action(func(c *cli.Context) error { // Start the logger @@ -99,8 +124,16 @@ func main() { iLogger.Logrus().Fatal(err) } + // Initialize GIN + if c.Bool("router_debugmode") { + gin.SetMode(gin.DebugMode) + } else { + gin.SetMode(gin.ReleaseMode) + } + r := gin.New() + // Initalize the Handler - if err := routerHandler.Init(srv, r, authReg.Plugin()); err != nil { + if err := routerHandler.Init(srv, r, authReg.Plugin(), c.Int("router_refresh")); err != nil { iLogger.Logrus().Fatal(err) } diff --git a/go.mod b/go.mod index 1891ff7..5ef0ce3 100644 --- a/go.mod +++ b/go.mod @@ -5,14 +5,11 @@ go 1.19 require ( github.com/gin-gonic/gin v1.8.1 github.com/go-micro/plugins/v4/broker/nats v1.1.1-0.20220908125827-e0369dde429b - github.com/go-micro/plugins/v4/config/encoder/toml v1.1.0 - github.com/go-micro/plugins/v4/config/encoder/yaml v1.1.0 github.com/go-micro/plugins/v4/logger/logrus v1.1.0 github.com/go-micro/plugins/v4/registry/nats v1.1.1-0.20220908125827-e0369dde429b github.com/go-micro/plugins/v4/server/http v1.1.0 github.com/go-micro/plugins/v4/transport/grpc v1.1.0 github.com/go-micro/plugins/v4/transport/nats v1.1.1-0.20220908125827-e0369dde429b - github.com/pkg/errors v0.9.1 github.com/sirupsen/logrus v1.9.0 github.com/toorop/gin-logrus v0.0.0-20210225092905-2c785434f26f github.com/urfave/cli/v2 v2.16.3 @@ -22,7 +19,6 @@ require ( ) require ( - github.com/BurntSushi/toml v1.2.0 // indirect github.com/Microsoft/go-winio v0.5.2 // indirect github.com/ProtonMail/go-crypto v0.0.0-20220824120805-4b6e5c587895 // indirect github.com/acomagu/bufpipe v1.0.3 // indirect @@ -34,7 +30,6 @@ require ( github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect github.com/fsnotify/fsnotify v1.5.4 // indirect - github.com/ghodss/yaml v1.0.0 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-acme/lego/v4 v4.8.0 // indirect github.com/go-git/gcfg v1.5.0 // indirect @@ -68,6 +63,7 @@ require ( github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pelletier/go-toml/v2 v2.0.5 // indirect + github.com/pkg/errors v0.9.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sergi/go-diff v1.2.0 // indirect github.com/ugorji/go/codec v1.2.7 // indirect @@ -79,6 +75,7 @@ require ( golang.org/x/sync v0.0.0-20220907140024-f12130a52804 // indirect golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8 // indirect golang.org/x/text v0.3.7 // indirect + golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9 // indirect golang.org/x/tools v0.1.12 // indirect google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006 // indirect google.golang.org/grpc v1.49.0 // indirect diff --git a/go.sum b/go.sum index 536f99e..6ea9d54 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,3 @@ -github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0= -github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= @@ -41,8 +39,6 @@ github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= @@ -63,10 +59,6 @@ github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti github.com/go-log/log v0.2.0 h1:z8i91GBudxD5L3RmF0KVpetCbcGWAV7q1Tw1eRwQM9Q= github.com/go-micro/plugins/v4/broker/nats v1.1.1-0.20220908125827-e0369dde429b h1:hzQUmqhw+g+qEcMXfZFCR28ASgjnFTbI24KJFSk7+4Y= github.com/go-micro/plugins/v4/broker/nats v1.1.1-0.20220908125827-e0369dde429b/go.mod h1:dJ5fMD5/7rK1/DNtyWzI/5kGtjYzB1DwMlANr7b2ar4= -github.com/go-micro/plugins/v4/config/encoder/toml v1.1.0 h1:2inKk4YPjzUKvQEzmFT1ecQ4N7aAKQzF6tnOsR+rA9c= -github.com/go-micro/plugins/v4/config/encoder/toml v1.1.0/go.mod h1:QVbmOF267EAet8mWqbxHr7vGd6h9I9Aw6dZ7+/6v2a8= -github.com/go-micro/plugins/v4/config/encoder/yaml v1.1.0 h1:8G9f9WfdN8zzoEznAv5dOtMCh9R9RMdC3isUhDwe6Ro= -github.com/go-micro/plugins/v4/config/encoder/yaml v1.1.0/go.mod h1:NB58gTmSYwibr+jZQOPDj/WoeGXSCcHTvQi+UcdDNxw= github.com/go-micro/plugins/v4/logger/logrus v1.1.0 h1:qCWt1eW2GiQnwivrBBcPRZbCwQ51A5SGUXptpxmGcuQ= github.com/go-micro/plugins/v4/logger/logrus v1.1.0/go.mod h1:aNJaayU7YKqlxwM91B3NixYpGgtCk1HiSgwuvCb7co0= github.com/go-micro/plugins/v4/registry/nats v1.1.1-0.20220908125827-e0369dde429b h1:9XdSUFJq2pR3QQquzpjiyHRBzHahvmQrwATzBtIyM2w= @@ -193,7 +185,6 @@ github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PK github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/toorop/gin-logrus v0.0.0-20210225092905-2c785434f26f h1:oqdnd6OGlOUu1InG37hWcCB3a+Jy3fwjylyVboaNMwY= github.com/toorop/gin-logrus v0.0.0-20210225092905-2c785434f26f/go.mod h1:X3Dd1SB8Gt1V968NTzpKFjMM6O8ccta2NPC6MprOxZQ= -github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo= github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= @@ -217,8 +208,6 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90 h1:Y/gsMcFOcR+6S6f3YeMKl5g+dZMEWqcz5Czj/GWYbkM= -golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220919173607-35f4265a4bc0 h1:a5Yg6ylndHHYJqIPrdq0AhvR6KTvDTAvgBtaidhEevY= golang.org/x/crypto v0.0.0-20220919173607-35f4265a4bc0/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -231,8 +220,6 @@ golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5o golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591 h1:D0B/7al0LLrVC8aWF4+oxpv/m8bc7ViFfVS8/gXGdqI= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20220920203100-d0c6ba3f52d9 h1:asZqf0wXastQr+DudYagQS8uBO8bHKeYD1vbAvGmFL8= golang.org/x/net v0.0.0-20220920203100-d0c6ba3f52d9/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -264,8 +251,6 @@ golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41 h1:ohgcoMbSofXygzo6AD2I1kz3BFmW1QArPYTtwEM3UXc= -golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8 h1:h+EGohizhe9XlX18rfpa8k8RAc5XyaeamM+0VHRd4lc= golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -275,7 +260,7 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6 h1:Vv0JUPWTyeqUq42B2WJ1FeIDjjvGKoA2Ss+Ts0lAVbs= +golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9 h1:ftMN5LMiBFjbzleLqtoBZk7KdJwhuybIU+FckUHgoyQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= @@ -285,8 +270,6 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa h1:VWkrxnAx2C2hirAP+W5ADU7e/+93Yhk//ioKd2XFyDI= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006 h1:mmbq5q8M1t7dhkLw320YK4PsOXm6jdnUAkErImaIqOg= google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= google.golang.org/grpc v1.49.0 h1:WTLtQzmQori5FUH25Pq4WT22oCsv8USpQ+F6rqtsmxw= diff --git a/internal/config/load.go b/internal/config/load.go deleted file mode 100644 index 3b6c606..0000000 --- a/internal/config/load.go +++ /dev/null @@ -1,75 +0,0 @@ -package config - -import ( - "os" - "strings" - - "github.com/go-micro/plugins/v4/config/encoder/toml" - "github.com/go-micro/plugins/v4/config/encoder/yaml" - "github.com/pkg/errors" - "go-micro.dev/v4/config" - "go-micro.dev/v4/config/reader" - "go-micro.dev/v4/config/reader/json" - "go-micro.dev/v4/config/source/env" - "go-micro.dev/v4/config/source/file" - "go-micro.dev/v4/logger" - "jochum.dev/jo-micro/router/internal/util" -) - -// Load will load configurations and update it when changed -func Load(cfg interface{}) error { - var configor config.Config - var err error - switch strings.ToLower(os.Getenv("CONFIG_TYPE")) { - case "toml": - filename := "config.toml" - if name := os.Getenv("CONFIG_FILE"); len(name) > 0 { - filename = name - } - configor, err = config.NewConfig( - config.WithSource(file.NewSource(file.WithPath(filename))), - config.WithReader(json.NewReader(reader.WithEncoder(toml.NewEncoder()))), - ) - case "yaml": - filename := "config.yaml" - if name := os.Getenv("CONFIG_FILE"); len(name) > 0 { - filename = name - } - configor, err = config.NewConfig( - config.WithSource(file.NewSource(file.WithPath(filename))), - config.WithReader(json.NewReader(reader.WithEncoder(yaml.NewEncoder()))), - ) - default: - configor, err = config.NewConfig( - config.WithSource(env.NewSource()), - ) - } - if err != nil { - return errors.Wrap(err, "configor.New") - } - if err := configor.Load(); err != nil { - return errors.Wrap(err, "configor.Load") - } - if err := configor.Scan(cfg); err != nil { - return errors.Wrap(err, "configor.Scan") - } - - w, err := configor.Watch() - if err != nil { - return errors.Wrap(err, "configor.Watch") - } - util.GoSafe(func() { - for { - v, err := w.Next() - if err != nil { - logger.Error(err) - return - } - if err := v.Scan(cfg); err != nil { - logger.Error(err) - return - } - } - }) - return nil -} diff --git a/internal/util/env.go b/internal/util/env.go new file mode 100644 index 0000000..b8b6a26 --- /dev/null +++ b/internal/util/env.go @@ -0,0 +1,12 @@ +package util + +import "os" + +func GetEnvDefault(key, defaultValue string) string { + env := os.Getenv(key) + if env == "" { + return defaultValue + } + + return env +}