read config from stdin
This commit is contained in:
+3
-2
@@ -145,7 +145,7 @@ type AutherConfig struct {
|
|||||||
type AuthConfig struct {
|
type AuthConfig struct {
|
||||||
Username string `yaml:",omitempty" json:"username,omitempty"`
|
Username string `yaml:",omitempty" json:"username,omitempty"`
|
||||||
Password string `yaml:",omitempty" json:"password,omitempty"`
|
Password string `yaml:",omitempty" json:"password,omitempty"`
|
||||||
File string `yaml:",omitempty" json:"file,omitempty"`
|
File string `yaml:",omitempty" json:"file,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type SelectorConfig struct {
|
type SelectorConfig struct {
|
||||||
@@ -578,7 +578,8 @@ func (c *Config) Load() error {
|
|||||||
return v.Unmarshal(c)
|
return v.Unmarshal(c)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Config) Read(r io.Reader) error {
|
func (c *Config) Read(r io.Reader, configType string) error {
|
||||||
|
v.SetConfigType(configType)
|
||||||
if err := v.ReadConfig(r); err != nil {
|
if err := v.ReadConfig(r); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package parser
|
package parser
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -43,15 +44,28 @@ type parser struct {
|
|||||||
func (p *parser) Parse() (*config.Config, error) {
|
func (p *parser) Parse() (*config.Config, error) {
|
||||||
cfg := &config.Config{}
|
cfg := &config.Config{}
|
||||||
|
|
||||||
cfgFile := p.args.CfgFile
|
if cfgFile := strings.TrimSpace(p.args.CfgFile); cfgFile != "" {
|
||||||
if cfgFile != "" {
|
if cfgFile == "-" { // stdin
|
||||||
cfgFile = strings.TrimSpace(cfgFile)
|
br := bufio.NewReader(os.Stdin)
|
||||||
if strings.HasPrefix(cfgFile, "{") && strings.HasSuffix(cfgFile, "}") {
|
b, err := br.Peek(1)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if b[0] == '{' {
|
||||||
|
if err := cfg.Read(br, "json"); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if err := cfg.Read(br, "yaml"); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if strings.HasPrefix(cfgFile, "{") && strings.HasSuffix(cfgFile, "}") { // inline
|
||||||
if err := json.Unmarshal([]byte(cfgFile), cfg); err != nil {
|
if err := json.Unmarshal([]byte(cfgFile), cfg); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err := cfg.ReadFile(cfgFile); err != nil {
|
if err := cfg.ReadFile(cfgFile); err != nil { // file
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user