1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| package main
import ( "bytes" "context" "fmt" "log" "os" "viper/config"
"go.etcd.io/etcd/client/v3" )
func main() { loadFile() loadEnv() loadReader() loadEtcd() config.InitConf("config.yaml") conf := config.GetConf() fmt.Printf("%+v\n", conf) fmt.Println(conf.Server.IP)
etcdAddr := "127.0.0.1:2379" key := "/golang/viper/config.json" localFilePath := "config.json" writeConfToEtcd(etcdAddr, key, localFilePath) config.InitEtcdConf(etcdAddr, key, "json") conf = config.GetEtcdConf() fmt.Printf("%+v\n", conf) fmt.Println(conf.Server.IP)
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, os.Kill) defer stop() <-ctx.Done() }
func loadFile() { v, err := config.LoadFromFile("config.env") fmt.Println("config.env, ", err, v.Get("env"), v.Get("server.port"), v.Get("courses")) v, err = config.LoadFromFile("config.json") fmt.Println("config.json, ", err, v.Get("env"), v.Get("server.port"), v.Get("courses").([]interface{})[0], v.Get("list").([]interface{})[0].(map[string]interface{})["author"]) v, err = config.LoadFromFile("config.noext", "yaml") fmt.Println("config.noext, ", err, v.Get("env"), v.Get("server.port"), v.Get("courses").([]interface{})[0], v.Get("list").([]interface{})[0].(map[string]interface{})["author"]) v, err = config.LoadFromFile("config.toml") fmt.Println("config.toml, ", err, v.Get("env"), v.Get("server.port"), v.Get("courses").(map[string]interface{})["list"], v.Get("list").([]interface{})[0].(map[string]interface{})["author"]) v, err = config.LoadFromFile("config.yaml") fmt.Println("config.yaml, ", err, v.Get("env"), v.Get("server.port"), v.Get("courses").([]interface{})[0], v.Get("list").([]interface{})[0].(map[string]interface{})["author"]) }
func loadEnv() { v, err := config.LoadFromEnv() fmt.Println(err, v.Get("GOROOT"), v.Get("GOPATH")) }
func loadReader() { bytelist, err := os.ReadFile("config.yaml") if err != nil { log.Fatal(err) } r := bytes.NewReader(bytelist) v, err := config.LoadFromEnvIOReader(r, "yaml") fmt.Println("io.reader, ", err, v.Get("env"), v.Get("server.port"), v.Get("courses").([]interface{})[0], v.Get("list").([]interface{})[0].(map[string]interface{})["author"]) }
func loadEtcd() { etcdAddr := "127.0.0.1:2379" key := "/golang/viper/config.yaml" localFilePath := "config.yaml" writeConfToEtcd(etcdAddr, key, localFilePath) v, err := config.LoadFromEtcd(etcdAddr, key, "yaml") fmt.Println("etcd, ", err, v.Get("env"), v.Get("server.port"), v.Get("courses").([]interface{})[0], v.Get("list").([]interface{})[0].(map[string]interface{})["author"]) }
func writeConfToEtcd(etcdAddr, key, localFilePath string) { bytelist, err := os.ReadFile(localFilePath) if err != nil { log.Fatal(err) } value := string(bytelist) cli, err := clientv3.New(clientv3.Config{ Endpoints: []string{etcdAddr}, }) if err != nil { log.Fatal(err) } _, err = cli.Put(context.Background(), key, value) if err != nil { log.Fatal(err) } }
|