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
|
package etc
|
||||||
|
|
||||||
import "git.sr.ht/~cco/go-scopes"
|
import "git.sr.ht/~cco/go-scopes/config"
|
||||||
|
|
||||||
func Config() *scopes.Config {
|
func Config() config.Config {
|
||||||
return &scopes.Config{
|
return config.MakeConfig("dummy")
|
||||||
Name: "dummy",
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -6,11 +6,12 @@ import (
|
||||||
"demo/etc"
|
"demo/etc"
|
||||||
|
|
||||||
"git.sr.ht/~cco/go-scopes"
|
"git.sr.ht/~cco/go-scopes"
|
||||||
|
"git.sr.ht/~cco/go-scopes/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
fmt.Println("vim-go")
|
fmt.Println(etc.Config().Name())
|
||||||
scopes.Setup()
|
|
||||||
fmt.Println(etc.Config().Name)
|
|
||||||
fmt.Println(etc.Override()["name"])
|
fmt.Println(etc.Override()["name"])
|
||||||
|
cfg := config.Setup(etc.Config())
|
||||||
|
scopes.RunApp(cfg)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
package scopes
|
package scopes
|
||||||
|
|
||||||
type Config struct {
|
import "git.sr.ht/~cco/go-scopes/config"
|
||||||
Name string
|
|
||||||
}
|
|
||||||
|
|
||||||
func Setup() {
|
func RunApp(cfg config.Config) {
|
||||||
|
_ = cfg
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
package etc
|
package etc
|
||||||
|
|
||||||
import "git.sr.ht/~cco/go-scopes"
|
import "git.sr.ht/~cco/go-scopes/config"
|
||||||
|
|
||||||
func Config() *scopes.Config {
|
func Config() config.Config {
|
||||||
return &scopes.Config{
|
return config.MakeConfig("dummy")
|
||||||
Name: "dummy",
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// collect here the names of fields that may be overridden via
|
// collect here the names of fields that may be overridden via
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
tbase "testing"
|
tbase "testing"
|
||||||
|
|
||||||
"git.sr.ht/~cco/go-scopes"
|
"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/testing"
|
||||||
"git.sr.ht/~cco/go-scopes/tests/etc"
|
"git.sr.ht/~cco/go-scopes/tests/etc"
|
||||||
)
|
)
|
||||||
|
@ -14,7 +15,8 @@ func TestConfig(tb *tbase.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func ConfigTest(t *testing.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")
|
t.AssertEqual(etc.Override()[etc.NAME], "overridden")
|
||||||
|
cfg := config.Setup(etc.Config())
|
||||||
|
scopes.RunApp(cfg)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue