-
Notifications
You must be signed in to change notification settings - Fork 1
/
config.go
81 lines (70 loc) · 1.86 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package lib
import (
"os"
"path"
"strings"
conf "bitbucket.org/ivan-iver/config"
)
var (
production = `production`
filename = `app.conf`
)
// Config models an entity config reader
type Config struct {
Pwd string
Filename string
IsProduction bool
*conf.Config
}
// NewConfig creates a config struct.
func NewConfig() (config *Config, err error) {
config = &Config{Filename: filename}
if config.Pwd, err = os.Getwd(); err != nil {
config.setDefault(err)
return
}
var file = config.File()
if config.Config, err = conf.ReadDefault(file); err != nil {
config.setDefault(err)
return
}
config.IsProduction = strings.EqualFold(config.Default("env"), production)
return
}
// Set default values when config file does not exists
func (c *Config) setDefault(err error) {
log.Warning("Config file missing. Using default settings. ", err)
c.Config = &conf.Config{}
c.IsProduction = false
}
// File function returns configuration file path
func (c *Config) File() (file string) {
return path.Join(c.Pwd, c.Filename)
}
// Default function gets config property from default section
func (c *Config) Default(property string) (result string) {
var err error
if result, err = c.String("default", property); err != nil {
log.Warning(err)
return ""
}
return
}
// StringDefault gets config property from default section or use default value
func (c *Config) StringDefault(property string, strDefault string) (result string) {
var err error
if result, err = c.String("default", property); err != nil {
log.Warning(err)
return strDefault
}
return
}
// BooleanDefault function gets config property from default section or use default boolean value
func (c *Config) BooleanDefault(property string, boolDefault bool) (result bool) {
var err error
if result, err = c.Bool("default", property); err != nil {
log.Warning(err)
return boolDefault
}
return
}