summaryrefslogtreecommitdiff
path: root/plugins/config
diff options
context:
space:
mode:
authorValery Piashchynski <[email protected]>2020-12-21 14:24:45 +0300
committerGitHub <[email protected]>2020-12-21 14:24:45 +0300
commit8543980775e5f8b12e5e200a0764052cdb4350a5 (patch)
treec1c6dff8e6bd81bcf51d608c5ed935702911ae81 /plugins/config
parentfd6e9cc403fc0c3857dcf29768429a374bd85636 (diff)
parent7b32b6b93576ec72b4b7fdf2068e655f869e9cf8 (diff)
Merge pull request #453 from spiral/plugin/redis
Plugin/redis
Diffstat (limited to 'plugins/config')
-rwxr-xr-xplugins/config/configurer.go19
-rwxr-xr-xplugins/config/plugin.go41
-rwxr-xr-xplugins/config/tests/plugin1.go6
3 files changed, 13 insertions, 53 deletions
diff --git a/plugins/config/configurer.go b/plugins/config/configurer.go
deleted file mode 100755
index 00010eae..00000000
--- a/plugins/config/configurer.go
+++ /dev/null
@@ -1,19 +0,0 @@
-package config
-
-type Configurer interface {
- // UnmarshalKey reads configuration section into configuration object.
- //
- // func (h *HttpService) Init(cp config.Configurer) error {
- // h.config := &HttpConfig{}
- // if err := configProvider.UnmarshalKey("http", h.config); err != nil {
- // return err
- // }
- // }
- UnmarshalKey(name string, out interface{}) error
-
- // Get used to get config section
- Get(name string) interface{}
-
- // Has checks if config section exists.
- Has(name string) bool
-}
diff --git a/plugins/config/plugin.go b/plugins/config/plugin.go
index 2555d28a..4cde314d 100755
--- a/plugins/config/plugin.go
+++ b/plugins/config/plugin.go
@@ -1,17 +1,18 @@
package config
import (
+ "bytes"
"errors"
- "fmt"
"strings"
"github.com/spf13/viper"
)
type Viper struct {
- viper *viper.Viper
- Path string
- Prefix string
+ viper *viper.Viper
+ Path string
+ Prefix string
+ ReadInCfg []byte
}
// Inits config provider.
@@ -32,17 +33,16 @@ func (v *Viper) Init() error {
v.viper.SetConfigFile(v.Path)
v.viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
+ if v.ReadInCfg != nil {
+ return v.viper.ReadConfig(bytes.NewBuffer(v.ReadInCfg))
+ }
return v.viper.ReadInConfig()
}
// Overwrite overwrites existing config with provided values
-func (v *Viper) Overwrite(values map[string]string) error {
+func (v *Viper) Overwrite(values map[string]interface{}) error {
if len(values) != 0 {
- for _, flag := range values {
- key, value, err := parseFlag(flag)
- if err != nil {
- return err
- }
+ for key, value := range values {
v.viper.Set(key, value)
}
}
@@ -68,24 +68,3 @@ func (v *Viper) Get(name string) interface{} {
func (v *Viper) Has(name string) bool {
return v.viper.IsSet(name)
}
-
-func parseFlag(flag string) (string, string, error) {
- if !strings.Contains(flag, "=") {
- return "", "", fmt.Errorf("invalid flag `%s`", flag)
- }
-
- parts := strings.SplitN(strings.TrimLeft(flag, " \"'`"), "=", 2)
-
- return strings.Trim(parts[0], " \n\t"), parseValue(strings.Trim(parts[1], " \n\t")), nil
-}
-
-func parseValue(value string) string {
- escape := []rune(value)[0]
-
- if escape == '"' || escape == '\'' || escape == '`' {
- value = strings.Trim(value, string(escape))
- value = strings.ReplaceAll(value, fmt.Sprintf("\\%s", string(escape)), string(escape))
- }
-
- return value
-}
diff --git a/plugins/config/tests/plugin1.go b/plugins/config/tests/plugin1.go
index a276c15f..7b5d6bd8 100755
--- a/plugins/config/tests/plugin1.go
+++ b/plugins/config/tests/plugin1.go
@@ -4,7 +4,7 @@ import (
"errors"
"time"
- "github.com/spiral/roadrunner/v2/plugins/config"
+ config2 "github.com/spiral/roadrunner/v2/interfaces/config"
)
// ReloadConfig is a Reload configuration point.
@@ -23,11 +23,11 @@ type ServiceConfig struct {
}
type Foo struct {
- configProvider config.Configurer
+ configProvider config2.Configurer
}
// Depends on S2 and DB (S3 in the current case)
-func (f *Foo) Init(p config.Configurer) error {
+func (f *Foo) Init(p config2.Configurer) error {
f.configProvider = p
return nil
}