3
0

update(all): use namsral/flag in main

This commit is contained in:
Tit Petric
2018-07-17 11:09:06 +02:00
parent fdf2f6ca41
commit 5c6d05b9ff
4 changed files with 67 additions and 43 deletions

27
cmd/crm/flags.go Normal file
View File

@@ -0,0 +1,27 @@
package main
import (
"github.com/namsral/flag"
_ "github.com/joho/godotenv/autoload"
"github.com/crusttech/crust/rbac"
)
type configuration struct {
httpAddr string
dbDSN string
}
func flags(prefix string) configuration {
var config configuration
p := func(s string) string {
return prefix + "-" + s
}
flag.StringVar(&config.addr, p("http-addr"), ":3000", "Listen address for HTTP server")
flag.StringVar(&config.dsn, p("db-dsn"), "crust:crust@tcp(db1:3306)/crust?collation=utf8mb4_general_ci", "DSN for database connection")
rbac.Flags()
flag.Parse()
return config
}

View File

@@ -1,7 +1,6 @@
package main
import (
"flag"
"log"
"net"
"os"
@@ -10,6 +9,9 @@ import (
"github.com/go-chi/chi"
"github.com/namsral/flag"
"github.com/crusttech/crust/rbac"
"github.com/crusttech/crust/crm/rest"
"github.com/titpetric/factory"
)
@@ -24,26 +26,21 @@ func handleError(err error, message string) {
}
func main() {
// set up flags
var (
addr = flag.String("addr", ":3000", "Listen address for HTTP server")
dsn = flag.String("dsn", "crust:crust@tcp(db1:3306)/crust?collation=utf8mb4_general_ci", "DSN for database connection")
)
flag.Parse()
config := flags("crm")
// log to stdout not stderr
log.SetOutput(os.Stdout)
// set up database connection
factory.Database.Add("default", dsn)
factory.Database.Add("default", config.dbDSN)
db, err := factory.Database.Get()
handleError(err, "Can't connect to database")
db.Profiler = &factory.Database.ProfilerStdout
// listen socket for http server
log.Println("Starting http server on address " + *addr)
listener, err := net.Listen("tcp", *addr)
handleError(err, "Can't listen on addr "+*addr)
log.Println("Starting http server on address " + config.httpAddr)
listener, err := net.Listen("tcp", config.httpAddr)
handleError(err, "Can't listen on addr "+config.httpAddr)
// route options
routeOptions, err := RouteOptions{}.New()

27
cmd/sam/flags.go Normal file
View File

@@ -0,0 +1,27 @@
package main
import (
"github.com/namsral/flag"
_ "github.com/joho/godotenv/autoload"
"github.com/crusttech/crust/rbac"
)
type configuration struct {
httpAddr string
dbDSN string
}
func flags(prefix string) configuration {
var config configuration
p := func(s string) string {
return prefix + "-" + s
}
flag.StringVar(&config.addr, p("http-addr"), ":3000", "Listen address for HTTP server")
flag.StringVar(&config.dsn, p("db-dsn"), "crust:crust@tcp(db1:3306)/crust?collation=utf8mb4_general_ci", "DSN for database connection")
rbac.Flags()
flag.Parse()
return config
}

View File

@@ -1,7 +1,6 @@
package main
import (
"flag"
"log"
"net"
"os"
@@ -9,20 +8,11 @@ import (
"net/http"
"github.com/go-chi/chi"
_ "github.com/joho/godotenv/autoload"
"github.com/crusttech/crust/sam/rest"
"github.com/titpetric/factory"
)
const (
defaultAddr = ":3000"
defaultDsn = "crust:crust@tcp(db1:3306)/crust?collation=utf8mb4_general_ci"
envVarKey_HTTP_ADDR = "SAM_HTTP_ADDR"
envVarKey_DB_DSN = "SAM_DB_DSN"
)
func handleError(err error, message string) {
if message == "" {
message = "Error making API call"
@@ -33,38 +23,21 @@ func handleError(err error, message string) {
}
func main() {
var envHttpAddr, envDbDsn string
var has bool
if envHttpAddr, has = os.LookupEnv(envVarKey_HTTP_ADDR); !has {
envHttpAddr = defaultAddr
}
if envDbDsn, has = os.LookupEnv(envVarKey_DB_DSN); !has {
envDbDsn = defaultDsn
}
var (
// set up flags
addr = flag.String("addr", envHttpAddr, "Listen address for HTTP server")
dsn = flag.String("dsn", envDbDsn, "DSN for database connection")
)
flag.Parse()
config := flags("sam")
// log to stdout not stderr
log.SetOutput(os.Stdout)
// set up database connection
factory.Database.Add("default", dsn)
factory.Database.Add("default", config.dbDSN)
db, err := factory.Database.Get()
handleError(err, "Can't connect to database")
db.Profiler = &factory.Database.ProfilerStdout
// listen socket for http server
log.Println("Starting http server on address " + *addr)
listener, err := net.Listen("tcp", *addr)
handleError(err, "Can't listen on addr "+*addr)
log.Println("Starting http server on address " + config.httpAddr)
listener, err := net.Listen("tcp", config.httpAddr)
handleError(err, "Can't listen on addr "+config.httpAddr)
// route options
routeOptions, err := RouteOptions{}.New()