Base project to template
This commit is contained in:
53
config/config.go
Executable file
53
config/config.go
Executable file
@@ -0,0 +1,53 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"local/args"
|
||||
"local/storage"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
Port string
|
||||
OAuthServer string
|
||||
Store storage.DB
|
||||
StoreType string
|
||||
StoreAddr string
|
||||
StoreUser string
|
||||
StorePass string
|
||||
)
|
||||
|
||||
func init() {
|
||||
Refresh()
|
||||
}
|
||||
|
||||
func Refresh() {
|
||||
if strings.Contains(fmt.Sprint(os.Args), " -test") {
|
||||
return
|
||||
}
|
||||
|
||||
as := args.NewArgSet()
|
||||
as.Append(args.STRING, "port", "port to listen on", "49809")
|
||||
as.Append(args.STRING, "oauth", "oauth URL", "")
|
||||
as.Append(args.STRING, "storetype", "storage type", "map")
|
||||
as.Append(args.STRING, "storeaddr", "storage address", "")
|
||||
as.Append(args.STRING, "storeuser", "storage username", "")
|
||||
as.Append(args.STRING, "storepass", "storage password", "")
|
||||
if err := as.Parse(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
Port = ":" + strings.TrimPrefix(as.Get("port").GetString(), ":")
|
||||
OAuthServer = as.Get("oauth").GetString()
|
||||
StoreType = as.Get("storetype").GetString()
|
||||
StoreAddr = as.Get("storeaddr").GetString()
|
||||
StoreUser = as.Get("storeuser").GetString()
|
||||
StorePass = as.Get("storepass").GetString()
|
||||
|
||||
if db, err := storage.New(storage.TypeFromString(StoreType), StoreAddr, StoreUser, StorePass); err != nil {
|
||||
panic(err)
|
||||
} else {
|
||||
Store = db
|
||||
}
|
||||
}
|
||||
57
config/config_test.go
Normal file
57
config/config_test.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestConfigRefresh(t *testing.T) {
|
||||
was := os.Args
|
||||
defer func() {
|
||||
os.Args = was
|
||||
}()
|
||||
os.Args = []string{"na"}
|
||||
|
||||
d, err := ioutil.TempDir(os.TempDir(), "firestormy.config.test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.RemoveAll(d)
|
||||
|
||||
os.Setenv("PORT", "11111")
|
||||
os.Setenv("OAUTH", "localhost:27777")
|
||||
os.Setenv("STORETYPE", "leveldb")
|
||||
os.Setenv("STOREADDR", d)
|
||||
os.Setenv("STOREUSER", "user")
|
||||
os.Setenv("STOREPASS", "pass")
|
||||
|
||||
Refresh()
|
||||
|
||||
if v := Port; v != ":11111" {
|
||||
t.Error(v)
|
||||
}
|
||||
if v := OAuthServer; v != "localhost:27777" {
|
||||
t.Error(v)
|
||||
}
|
||||
if v := StoreType; v != "leveldb" {
|
||||
t.Error(v)
|
||||
}
|
||||
if v := StoreAddr; v != d {
|
||||
t.Error(v)
|
||||
}
|
||||
if v := StoreUser; v != "user" {
|
||||
t.Error(v)
|
||||
}
|
||||
if v := StorePass; v != "pass" {
|
||||
t.Error(v)
|
||||
}
|
||||
|
||||
if err := Store.Set("key", []byte("value")); err != nil {
|
||||
t.Error(err)
|
||||
} else if b, err := Store.Get("key"); err != nil {
|
||||
t.Error(err)
|
||||
} else if string(b) != "value" {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user