mirror of
https://github.com/minio/minio.git
synced 2025-02-26 04:49:16 -05:00
Merge pull request #805 from harshavardhana/quick
Add a new quick.Load() function to load directly any config file prov…
This commit is contained in:
commit
555c946670
@ -126,6 +126,35 @@ func (d config) Save(filename string) *probe.Error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Load - loads json config
|
||||||
|
func Load(filename string, data interface{}) (Config, *probe.Error) {
|
||||||
|
_, err := os.Stat(filename)
|
||||||
|
if err != nil {
|
||||||
|
return nil, probe.NewError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fileData, err := ioutil.ReadFile(filename)
|
||||||
|
if err != nil {
|
||||||
|
return nil, probe.NewError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
fileData = []byte(strings.Replace(string(fileData), "\r\n", "\n", -1))
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal(fileData, &data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, probe.NewError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
config, perr := New(data)
|
||||||
|
if perr != nil {
|
||||||
|
return nil, perr.Trace()
|
||||||
|
}
|
||||||
|
|
||||||
|
return config, nil
|
||||||
|
}
|
||||||
|
|
||||||
// Load - loads JSON config from file and merge with currently set values
|
// Load - loads JSON config from file and merge with currently set values
|
||||||
func (d *config) Load(filename string) *probe.Error {
|
func (d *config) Load(filename string) *probe.Error {
|
||||||
d.lock.Lock()
|
d.lock.Lock()
|
||||||
@ -145,6 +174,12 @@ func (d *config) Load(filename string) *probe.Error {
|
|||||||
fileData = []byte(strings.Replace(string(fileData), "\r\n", "\n", -1))
|
fileData = []byte(strings.Replace(string(fileData), "\r\n", "\n", -1))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
st := structs.New(d.data)
|
||||||
|
f, ok := st.FieldOk("Version")
|
||||||
|
if !ok {
|
||||||
|
return probe.NewError(fmt.Errorf("Argument struct [%s] does not contain field \"Version\".", st.Name()))
|
||||||
|
}
|
||||||
|
|
||||||
err = json.Unmarshal(fileData, d.data)
|
err = json.Unmarshal(fileData, d.data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return probe.NewError(err)
|
return probe.NewError(err)
|
||||||
@ -154,12 +189,6 @@ func (d *config) Load(filename string) *probe.Error {
|
|||||||
return err.Trace()
|
return err.Trace()
|
||||||
}
|
}
|
||||||
|
|
||||||
st := structs.New(d.data)
|
|
||||||
f, ok := st.FieldOk("Version")
|
|
||||||
if !ok {
|
|
||||||
return probe.NewError(fmt.Errorf("Argument struct [%s] does not contain field \"Version\".", st.Name()))
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*d).Version() != f.Value() {
|
if (*d).Version() != f.Value() {
|
||||||
return probe.NewError(fmt.Errorf("Version mismatch"))
|
return probe.NewError(fmt.Errorf("Version mismatch"))
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user