Read config from file, useful when read data from kubernetes configmaps, and secret.
package main
import (
"fmt"
"net/http"
"github.com/acoshift/configfile"
"github.com/garyburd/redigo/redis"
)
var config = configfile.NewReader("config")
var (
addr = config.StringDefault("addr", ":8080")
redisAddr = config.MustString("redis_addr")
redisPass = config.String("redis_pass")
redisDB = config.Int("redis_db")
)
func main() {
pool := redis.Pool{
Dial: func() (redis.Conn, error) {
return redis.Dial(
"tcp",
redisAddr,
redis.DialPassword(redisPass),
redis.DialDatabase(redisDB),
)
},
}
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
c := pool.Get()
defer c.Close()
cnt, err := redis.Int64(c.Do("INCR", "cnt"))
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
fmt.Fprintf(w, "count: %d", cnt)
})
http.ListenAndServe(addr, nil)
}
package main
import (
"log"
"net/http"
"github.com/acoshift/configfile"
)
func main() {
var config = configfile.NewReader("testdata/config.yaml")
// or use NewYAMLReader
var config = configfile.NewYAMLReader("testdata/config.yaml")
log.Println(config.Bool("data1")) // true
log.Println(config.String("data2")) // false
log.Println(config.Int("data3")) // 9
log.Println(config.Int("data4")) // 0
log.Println(config.String("empty")) // ""
}