provide Config interface with basic implementation
This commit is contained in:
parent
87e9bb5fc4
commit
82723c8c80
6 changed files with 49 additions and 19 deletions
32
config/config.go
Normal file
32
config/config.go
Normal file
|
@ -0,0 +1,32 @@
|
|||
package config
|
||||
|
||||
type Config interface {
|
||||
Name() string
|
||||
Children() []Config
|
||||
AddChild(Config)
|
||||
}
|
||||
|
||||
type BaseConfig struct {
|
||||
name string
|
||||
children []Config
|
||||
}
|
||||
|
||||
func (cfg *BaseConfig) Name() string {
|
||||
return cfg.name
|
||||
}
|
||||
|
||||
func (cfg *BaseConfig) Children() []Config {
|
||||
return cfg.children
|
||||
}
|
||||
|
||||
func (cfg *BaseConfig) AddChild(child Config) {
|
||||
cfg.children = append(cfg.children, child)
|
||||
}
|
||||
|
||||
func MakeConfig(name string) Config {
|
||||
return &BaseConfig{name: name}
|
||||
}
|
||||
|
||||
func Setup(cfg Config) Config {
|
||||
return cfg
|
||||
}
|
|
@ -1,11 +1,9 @@
|
|||
package etc
|
||||
|
||||
import "git.sr.ht/~cco/go-scopes"
|
||||
import "git.sr.ht/~cco/go-scopes/config"
|
||||
|
||||
func Config() *scopes.Config {
|
||||
return &scopes.Config{
|
||||
Name: "dummy",
|
||||
}
|
||||
func Config() config.Config {
|
||||
return config.MakeConfig("dummy")
|
||||
}
|
||||
|
||||
const (
|
||||
|
|
|
@ -6,11 +6,12 @@ import (
|
|||
"demo/etc"
|
||||
|
||||
"git.sr.ht/~cco/go-scopes"
|
||||
"git.sr.ht/~cco/go-scopes/config"
|
||||
)
|
||||
|
||||
func main() {
|
||||
fmt.Println("vim-go")
|
||||
scopes.Setup()
|
||||
fmt.Println(etc.Config().Name)
|
||||
fmt.Println(etc.Config().Name())
|
||||
fmt.Println(etc.Override()["name"])
|
||||
cfg := config.Setup(etc.Config())
|
||||
scopes.RunApp(cfg)
|
||||
}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
package scopes
|
||||
|
||||
type Config struct {
|
||||
Name string
|
||||
}
|
||||
import "git.sr.ht/~cco/go-scopes/config"
|
||||
|
||||
func Setup() {
|
||||
func RunApp(cfg config.Config) {
|
||||
_ = cfg
|
||||
}
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
package etc
|
||||
|
||||
import "git.sr.ht/~cco/go-scopes"
|
||||
import "git.sr.ht/~cco/go-scopes/config"
|
||||
|
||||
func Config() *scopes.Config {
|
||||
return &scopes.Config{
|
||||
Name: "dummy",
|
||||
}
|
||||
func Config() config.Config {
|
||||
return config.MakeConfig("dummy")
|
||||
}
|
||||
|
||||
// collect here the names of fields that may be overridden via
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
tbase "testing"
|
||||
|
||||
"git.sr.ht/~cco/go-scopes"
|
||||
"git.sr.ht/~cco/go-scopes/config"
|
||||
"git.sr.ht/~cco/go-scopes/testing"
|
||||
"git.sr.ht/~cco/go-scopes/tests/etc"
|
||||
)
|
||||
|
@ -14,7 +15,8 @@ func TestConfig(tb *tbase.T) {
|
|||
}
|
||||
|
||||
func ConfigTest(t *testing.T) {
|
||||
scopes.Setup()
|
||||
t.AssertEqual(etc.Config().Name, "dummy")
|
||||
t.AssertEqual(etc.Config().Name(), "dummy")
|
||||
t.AssertEqual(etc.Override()[etc.NAME], "overridden")
|
||||
cfg := config.Setup(etc.Config())
|
||||
scopes.RunApp(cfg)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue