mirror of
https://github.com/go-gitea/gitea
synced 2024-09-19 18:26:04 +00:00
38 lines
735 B
Go
38 lines
735 B
Go
|
package config
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
|
||
|
"github.com/src-d/gcfg"
|
||
|
)
|
||
|
|
||
|
// A Decoder reads and decodes config files from an input stream.
|
||
|
type Decoder struct {
|
||
|
io.Reader
|
||
|
}
|
||
|
|
||
|
// NewDecoder returns a new decoder that reads from r.
|
||
|
func NewDecoder(r io.Reader) *Decoder {
|
||
|
return &Decoder{r}
|
||
|
}
|
||
|
|
||
|
// Decode reads the whole config from its input and stores it in the
|
||
|
// value pointed to by config.
|
||
|
func (d *Decoder) Decode(config *Config) error {
|
||
|
cb := func(s string, ss string, k string, v string, bv bool) error {
|
||
|
if ss == "" && k == "" {
|
||
|
config.Section(s)
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
if ss != "" && k == "" {
|
||
|
config.Section(s).Subsection(ss)
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
config.AddOption(s, ss, k, v)
|
||
|
return nil
|
||
|
}
|
||
|
return gcfg.ReadWithCallback(d, cb)
|
||
|
}
|