Base project to template

This commit is contained in:
bel
2020-03-12 13:48:04 -06:00
commit f022b26987
19 changed files with 543 additions and 0 deletions

53
config/config.go Executable file
View 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
View 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)
}
}