11package main
22
3- func main () {
4- db_type := "postgres"
5- db_user := "postgres"
6- db_password := "123456"
7- db_host := "localhost"
8- db_database := "dbSapHasap"
3+ import (
4+ "encoding/json"
5+ "fmt"
6+ "io/ioutil"
7+ "os"
8+
9+ "github.com/joho/godotenv"
10+ "github.com/pkg/errors"
11+ log "github.com/sirupsen/logrus"
12+ )
13+
14+ type config struct {
15+ ListenAddress string `json:"listen_address"`
16+ DB_Type string `json:"db_type"`
17+ DB_User string `json:"db_user"`
18+ DB_Password string `json:"db_password"`
19+ DB_Host string `json:"db_host"`
20+ DB_Database string `json:"db_database"`
21+ }
22+
23+ func ReadConfig (source string ) (c * config , err error ) {
24+ var raw []byte
25+ raw , err = ioutil .ReadFile (source )
26+ if err != nil {
27+ eMsg := "error reading config from file"
28+ log .WithError (err ).Error (eMsg )
29+ err = errors .Wrap (err , eMsg )
30+ return
31+ }
32+ err = json .Unmarshal (raw , & c )
33+ if err != nil {
34+ eMsg := "error parsing config from json"
35+ log .WithError (err ).Error (eMsg )
36+ err = errors .Wrap (err , eMsg )
37+ c = nil
38+ }
39+ return
40+ }
41+
42+ func run () error {
43+ var configFile string
44+ var conf * config
45+ var err error
46+ err = godotenv .Load ()
47+ if err != nil {
48+ log .WithError (err ).Error ("error loading .env, ignoring" )
49+ }
50+ configFile = os .Getenv ("GATEWAYGO_CONFIG_FILE" )
51+ if configFile == "" {
52+ configFile = "gatewaygo.config.json"
53+ }
54+ conf , err = ReadConfig (configFile )
55+ if err != nil {
56+ log .WithError (err ).WithField ("config-file" , configFile ).Error ("error loading configuration" )
57+ return err
58+ }
59+
60+ db_type := conf .DB_Type
61+ db_user := conf .DB_User
62+ db_password := conf .DB_Password
63+ db_host := conf .DB_Host
64+ db_database := conf .DB_Database
965
1066 a := App {}
1167 a .Initialize (
@@ -16,6 +72,14 @@ func main() {
1672 db_database ,
1773 )
1874
19- a .Run (":8080" )
75+ a .Run (conf . ListenAddress )
2076
77+ return nil
78+ }
79+
80+ func main () {
81+ if err := run (); err != nil {
82+ fmt .Fprintf (os .Stderr , "%v" , err )
83+ os .Exit (1 )
84+ }
2185}
0 commit comments