diff --git a/config.example.yml b/config.example.yml deleted file mode 100644 index 8762bb4..0000000 --- a/config.example.yml +++ /dev/null @@ -1,5 +0,0 @@ -debug: false -rabbitmq: - host: "127.0.0.1" - username: "guest" - password: "guest" \ No newline at end of file diff --git a/example.env b/example.env new file mode 100644 index 0000000..44c2195 --- /dev/null +++ b/example.env @@ -0,0 +1,10 @@ +SERVICE_NAME=3 +SERVICE_TYPE=0 +DEBUG=false +HOST=127.0.0.1 +PORT= + +# RabbitMQ +RABBITMQ_HOST=127.0.0.1 +RABBITMQ_USERNAME=guest +RABBITMQ_PASSWORD=guest \ No newline at end of file diff --git a/go.mod b/go.mod index 98f7586..7c632fb 100644 --- a/go.mod +++ b/go.mod @@ -6,9 +6,9 @@ require ( git.clickandjoin.umbach.dev/ClickandJoin/go-cnj-helper v1.0.39 github.com/gofiber/fiber/v2 v2.40.1 github.com/google/uuid v1.3.0 + github.com/joho/godotenv v1.5.1 github.com/rabbitmq/amqp091-go v1.5.0 github.com/valyala/fasthttp v1.41.0 - gopkg.in/yaml.v2 v2.4.0 ) require ( diff --git a/go.sum b/go.sum index a89f5fc..53ce248 100644 --- a/go.sum +++ b/go.sum @@ -1,10 +1,10 @@ -git.clickandjoin.umbach.dev/ClickandJoin/go-cnj-helper v1.0.36 h1:tqx39cmvtID3lbjvUbN6Vv2Xt16fXQSwnxiw4esMqnQ= -git.clickandjoin.umbach.dev/ClickandJoin/go-cnj-helper v1.0.36/go.mod h1:RnqJsFYGR0cdxbeQjB1dDlr/MeKgnMkc7XoZtFDhMbo= git.clickandjoin.umbach.dev/ClickandJoin/go-cnj-helper v1.0.39 h1:H9YLpd4hvd0wXzKW050cQIHCg6rTchfKTzxp1dgXYLY= git.clickandjoin.umbach.dev/ClickandJoin/go-cnj-helper v1.0.39/go.mod h1:Jzc4/4ntrOLMOZYnUjkr1uBCVtRvPbEbQD+8kwBOdf4= github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932 h1:mXoPYz/Ul5HYEDvkta6I8/rnYM5gSdSV2tJ6XbZuEtY= github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -16,10 +16,13 @@ github.com/gofiber/fiber/v2 v2.40.1/go.mod h1:Gko04sLksnHbzLSRBFWPFdzM9Ws9pRxvvI github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= @@ -73,6 +76,7 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -99,12 +103,10 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/main.go b/main.go index b976aa1..0e8ebf0 100644 --- a/main.go +++ b/main.go @@ -3,7 +3,6 @@ package main import ( "bufio" "fmt" - "os" "time" "clickandjoin.app/serversenteventsserver/modules/cache" @@ -32,10 +31,6 @@ func main() { // TODO: better way to handle this time.Sleep(500 * time.Millisecond) - if len(os.Args) < 2 { - gocnjhelper.LogFatal("Please specify port") - } - // TODO: origin // CORS for external resources app.Use(cors.New(cors.Config{ @@ -86,5 +81,7 @@ func main() { return nil }) - app.Listen("127.0.0.1:" + os.Args[1]) + cfg := config.Cfg + + app.Listen(cfg.Host + ":" + cfg.Port) } diff --git a/modules/config/config.go b/modules/config/config.go index a6fc268..e60cc59 100644 --- a/modules/config/config.go +++ b/modules/config/config.go @@ -2,16 +2,21 @@ package config import ( "os" + "strconv" gocnjhelper "git.clickandjoin.umbach.dev/ClickandJoin/go-cnj-helper" - "gopkg.in/yaml.v2" + "github.com/joho/godotenv" ) var Cfg Config type Config struct { - Debug bool - RabbitMq RabbitMq + ServiceName uint8 + ServiceType uint8 + Debug bool + Host string + Port string + RabbitMq RabbitMq } type RabbitMq struct { @@ -21,13 +26,45 @@ type RabbitMq struct { } func LoadConfig() { - data, err := os.ReadFile("config.yml") + // argument to start the server locally for development + if len(os.Args) > 1 { + if os.Args[1] == "--local" || os.Args[1] == "-l" { + if err := godotenv.Load("local.env"); err != nil { + gocnjhelper.LogFatalf("Failed to load env, err: %s", err) + } + } + } + + debug, err := strconv.ParseBool(os.Getenv("DEBUG")) if err != nil { - gocnjhelper.LogFatalf("Failed to read config file, err: %s", err) + gocnjhelper.LogFatalf("Failed to parse boolean, err: %s", err) } - if err := yaml.Unmarshal(data, &Cfg); err != nil { - gocnjhelper.LogFatalf("Failed to unmarshal config file, err: %s", err) + serviceName, err := strconv.Atoi(os.Getenv("SERVICE_NAME")) + + if err != nil { + gocnjhelper.LogFatalf("Failed to parse int, err: %s", err) } + + serviceType, err := strconv.Atoi(os.Getenv("SERVICE_TYPE")) + + if err != nil { + gocnjhelper.LogFatalf("Failed to parse int, err: %s", err) + } + + cfg := Config{ + ServiceName: uint8(serviceName), + ServiceType: uint8(serviceType), + Debug: debug, + Host: os.Getenv("HOST"), + Port: os.Getenv("PORT"), + RabbitMq: RabbitMq{ + Host: os.Getenv("RABBITMQ_HOST"), + Username: os.Getenv("RABBITMQ_USERNAME"), + Password: os.Getenv("RABBITMQ_PASSWORD"), + }, + } + + Cfg = cfg }