ent seteup
This commit is contained in:
@@ -2,19 +2,56 @@ package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"gitserver.in/patialtech/rano/config/dotenv"
|
||||
"gitserver.in/patialtech/rano/pkg/logger"
|
||||
)
|
||||
|
||||
const Env = "development"
|
||||
const (
|
||||
// projDir need to be same as project code root dir name
|
||||
projDir = "rano"
|
||||
EnvDev = "development"
|
||||
EnvProd = "production"
|
||||
EnvStage = "staging"
|
||||
|
||||
var conf *Config
|
||||
AuthUserCtxKey = "AuthUser"
|
||||
)
|
||||
|
||||
var (
|
||||
conf *Config
|
||||
AppEnv Env = EnvDev
|
||||
)
|
||||
|
||||
type (
|
||||
Env string
|
||||
Config struct {
|
||||
WebPort int `env:"WEB_PORT"`
|
||||
WebURL string `env:"WEB_URL"`
|
||||
GraphPort int `env:"GRAPH_PORT"`
|
||||
GrapURL string `env:"GRAPH_URL"`
|
||||
DbURL string `env:"DB_URL"`
|
||||
}
|
||||
)
|
||||
|
||||
func init() {
|
||||
envVar, err := dotenv.Read(fmt.Sprintf(".env.%s", Env))
|
||||
wd, _ := os.Getwd()
|
||||
|
||||
// In dev env we run test and other program for diff dir locations under project root,
|
||||
// this makes reading env file harder.
|
||||
// Let's add a hack to make sure we fallback to root dir in dev env
|
||||
if AppEnv == EnvDev {
|
||||
idx := strings.Index(wd, projDir)
|
||||
if idx > -1 {
|
||||
wd = filepath.Join(wd[:idx], projDir)
|
||||
}
|
||||
}
|
||||
|
||||
envVar, err := dotenv.Read(wd, fmt.Sprintf(".env.%s", AppEnv))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
@@ -32,13 +69,6 @@ func Read() *Config {
|
||||
return conf
|
||||
}
|
||||
|
||||
type Config struct {
|
||||
WebPort int `env:"WEB_PORT"`
|
||||
WebURL string `env:"WEB_URL"`
|
||||
GraphPort int `env:"GRAPH_PORT"`
|
||||
GrapURL string `env:"GRAPH_URL"`
|
||||
}
|
||||
|
||||
func (c *Config) loadEnv(vars map[string]string) {
|
||||
if c == nil {
|
||||
return
|
||||
@@ -54,7 +84,7 @@ func (c *Config) loadEnv(vars map[string]string) {
|
||||
|
||||
v, found := vars[tag]
|
||||
if !found {
|
||||
logger.Warn("var %q not found in file .env.%s", tag, Env)
|
||||
logger.Warn("var %q not found in file .env.%s", tag, AppEnv)
|
||||
continue
|
||||
}
|
||||
|
||||
|
@@ -4,6 +4,9 @@ import (
|
||||
"bytes"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"gitserver.in/patialtech/rano/pkg/logger"
|
||||
)
|
||||
|
||||
//
|
||||
@@ -12,12 +15,13 @@ import (
|
||||
|
||||
// Read all env (with same file loading semantics as Load) but return values as
|
||||
// a map rather than automatically writing values into env
|
||||
func Read(filenames ...string) (envMap map[string]string, err error) {
|
||||
func Read(dir string, filenames ...string) (envMap map[string]string, err error) {
|
||||
filenames = filenamesOrDefault(filenames)
|
||||
envMap = make(map[string]string)
|
||||
|
||||
for _, filename := range filenames {
|
||||
individualEnvMap, individualErr := readFile(filename)
|
||||
logger.Info("read env file %s", filepath.Join(dir, filename))
|
||||
individualEnvMap, individualErr := readFile(filepath.Join(dir, filename))
|
||||
|
||||
if individualErr != nil {
|
||||
err = individualErr
|
||||
|
Reference in New Issue
Block a user