forked from kellegous/go
/
main.go
49 lines (38 loc) · 1.08 KB
/
main.go
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
package main
import (
"fmt"
"log"
"strings"
"github.com/spf13/pflag"
"github.com/spf13/viper"
"github.com/ansky/go/backend"
"github.com/ansky/go/backend/leveldb"
"github.com/ansky/go/web"
)
func main() {
pflag.String("addr", ":8067", "default bind address")
pflag.Bool("admin", false, "allow admin-level requests")
pflag.String("version", "", "version string")
pflag.String("backend", "leveldb", "backing store to use. Only 'leveldb' currently supported.")
pflag.String("data", "data", "The location of the leveldb data directory")
pflag.Parse()
if err := viper.BindPFlags(pflag.CommandLine); err != nil {
log.Panic(err)
}
// allow env vars to set pflags
viper.AutomaticEnv()
viper.SetEnvKeyReplacer(strings.NewReplacer("-", "_"))
var backend backend.Backend
switch viper.GetString("backend") {
case "leveldb":
var err error
backend, err = leveldb.New(viper.GetString("data"))
if err != nil {
log.Panic(err)
}
default:
log.Panic(fmt.Sprintf("unknown backend %s", viper.GetString("backend")))
}
defer backend.Close()
log.Panic(web.ListenAndServe(backend))
}