update cnf/loader to infer parser (config format) from content
This commit is contained in:
parent
aa3c8e472d
commit
7ceaf81ee5
|
@ -42,11 +42,11 @@ func Load(path string) (ConfigurationFormat, error) {
|
||||||
|
|
||||||
// parse
|
// parse
|
||||||
_, err = confFormat.ReadFrom(file)
|
_, err = confFormat.ReadFrom(file)
|
||||||
if err != nil {
|
if err == nil {
|
||||||
return nil, fmt.Errorf("cannot parse file as '%s' | %s", extension, err)
|
return confFormat, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return confFormat, nil
|
// return nil, fmt.Errorf("cannot parse file as '%s' | %s", extension, err)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,11 +72,11 @@ func loadFromExtension(ext string) ConfigurationFormat {
|
||||||
switch ext {
|
switch ext {
|
||||||
case ".json":
|
case ".json":
|
||||||
return new(json)
|
return new(json)
|
||||||
case ".ini":
|
case ".ini", ".conf":
|
||||||
return new(ini)
|
return new(ini)
|
||||||
case ".yaml":
|
case ".yaml":
|
||||||
return new(yaml)
|
return new(yaml)
|
||||||
case ".conf":
|
case ".nginx":
|
||||||
return new(nginx)
|
return new(nginx)
|
||||||
default:
|
default:
|
||||||
return nil
|
return nil
|
||||||
|
@ -85,5 +85,26 @@ func loadFromExtension(ext string) ConfigurationFormat {
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadFromContent(file io.Reader) ConfigurationFormat {
|
func loadFromContent(file io.Reader) ConfigurationFormat {
|
||||||
|
|
||||||
|
// extensions ordered by unicity of the language's syntax
|
||||||
|
extensions := []string{".json", ".yaml", ".nginx", ".ini"}
|
||||||
|
|
||||||
|
// try to load each available extension
|
||||||
|
for _, ext := range extensions {
|
||||||
|
|
||||||
|
// load parser
|
||||||
|
c := loadFromExtension(ext)
|
||||||
|
if c == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// parse
|
||||||
|
_, err := c.ReadFrom(file)
|
||||||
|
if err == nil {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue