You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
1.8 KiB
113 lines
1.8 KiB
6 years ago
|
package paladin_test
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/bilibili/Kratos/pkg/conf/paladin"
|
||
|
|
||
|
"github.com/BurntSushi/toml"
|
||
|
)
|
||
|
|
||
|
type exampleConf struct {
|
||
|
Bool bool
|
||
|
Int int64
|
||
|
Float float64
|
||
|
String string
|
||
|
Strings []string
|
||
|
}
|
||
|
|
||
|
func (e *exampleConf) Set(text string) error {
|
||
|
var ec exampleConf
|
||
|
if err := toml.Unmarshal([]byte(text), &ec); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
*e = ec
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// ExampleClient is a example client usage.
|
||
|
// exmaple.toml:
|
||
|
/*
|
||
|
bool = true
|
||
|
int = 100
|
||
|
float = 100.1
|
||
|
string = "text"
|
||
|
strings = ["a", "b", "c"]
|
||
|
*/
|
||
|
func ExampleClient() {
|
||
|
if err := paladin.Init(); err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
var ec exampleConf
|
||
|
// var setter
|
||
|
if err := paladin.Watch("example.toml", &ec); err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
if err := paladin.Get("example.toml").UnmarshalTOML(&ec); err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
// use exampleConf
|
||
|
// watch event key
|
||
|
go func() {
|
||
|
for event := range paladin.WatchEvent(context.TODO(), "key") {
|
||
|
fmt.Println(event)
|
||
|
}
|
||
|
}()
|
||
|
}
|
||
|
|
||
|
// ExampleMap is a example map usage.
|
||
|
// exmaple.toml:
|
||
|
/*
|
||
|
bool = true
|
||
|
int = 100
|
||
|
float = 100.1
|
||
|
string = "text"
|
||
|
strings = ["a", "b", "c"]
|
||
|
|
||
|
[object]
|
||
|
string = "text"
|
||
|
bool = true
|
||
|
int = 100
|
||
|
float = 100.1
|
||
|
strings = ["a", "b", "c"]
|
||
|
*/
|
||
|
func ExampleMap() {
|
||
|
var (
|
||
|
m paladin.TOML
|
||
|
strs []string
|
||
|
)
|
||
|
// paladin toml
|
||
|
if err := paladin.Watch("example.toml", &m); err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
// value string
|
||
|
s, err := m.Get("string").String()
|
||
|
if err != nil {
|
||
|
s = "default"
|
||
|
}
|
||
|
fmt.Println(s)
|
||
|
// value bool
|
||
|
b, err := m.Get("bool").Bool()
|
||
|
if err != nil {
|
||
|
b = false
|
||
|
}
|
||
|
fmt.Println(b)
|
||
|
// value int
|
||
|
i, err := m.Get("int").Int64()
|
||
|
if err != nil {
|
||
|
i = 100
|
||
|
}
|
||
|
fmt.Println(i)
|
||
|
// value float
|
||
|
f, err := m.Get("float").Float64()
|
||
|
if err != nil {
|
||
|
f = 100.1
|
||
|
}
|
||
|
fmt.Println(f)
|
||
|
// value slice
|
||
|
if err = m.Get("strings").Slice(&strs); err == nil {
|
||
|
fmt.Println(strs)
|
||
|
}
|
||
|
}
|