From 658472a13f29e7f9306664f5901009134e1ae490 Mon Sep 17 00:00:00 2001 From: Ruidy Nemausat Date: Mon, 16 Mar 2020 01:10:15 +0100 Subject: [PATCH] gitgnore, params struc --- .env | 3 +- .gitignore | 6 ++++ controller/controller_test.go | 1 - controller/router.go | 6 ---- main.go | 20 ++--------- settings/settings.go | 44 +++++++++++++++++++++-- main_test.go => settings/settings_test.go | 10 +++--- 7 files changed, 57 insertions(+), 33 deletions(-) create mode 100644 .gitignore rename main_test.go => settings/settings_test.go (58%) diff --git a/.env b/.env index c88bfa8..eba283e 100644 --- a/.env +++ b/.env @@ -1 +1,2 @@ -PORT=8080 \ No newline at end of file +PORT=8080 +TMPLDIR=templates/ \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5dc5b95 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.gitignore +.env +go-wiki +/templates/love.html +/settings/.envTest +.envTest \ No newline at end of file diff --git a/controller/controller_test.go b/controller/controller_test.go index 68e2bc1..048545d 100644 --- a/controller/controller_test.go +++ b/controller/controller_test.go @@ -18,5 +18,4 @@ func TestParseContactForm(t *testing.T) { if ans != service.NewMail("", "") { t.Errorf("parseContactForm(r) = %v", ans) } - } diff --git a/controller/router.go b/controller/router.go index ddbee17..adc6428 100644 --- a/controller/router.go +++ b/controller/router.go @@ -26,12 +26,6 @@ func Router() { http.HandleFunc("/", homeHandler) } -// func loveHandler(w http.ResponseWriter, r *http.Request) { -// title := r.URL.Path[1:] -// p := model.NewPage(title, nil) // already a pointer -// renderTemplate(w, "love", p) -// } - func homeHandler(w http.ResponseWriter, r *http.Request) { renderTemplate(w, "home", nil) } diff --git a/main.go b/main.go index f2d8f9e..1ffe409 100644 --- a/main.go +++ b/main.go @@ -3,34 +3,18 @@ package main import ( "log" "net/http" - "os" - "github.com/joho/godotenv" "github.com/rjNemo/go-wiki/controller" "github.com/rjNemo/go-wiki/settings" ) -var port string = readEnv(settings.EnvFile) - func main() { - startServer(port, controller.Router) + startServer(settings.Port, controller.Router) } func startServer(p string, r func()) { - log.Printf("Start Go-wiki server on http://localhost:%s\n", port) + log.Printf("Start Go-wiki server on http://localhost:%s", p) port := ":" + p r() log.Fatal(http.ListenAndServe(port, nil)) } - -func readEnv(f string) string { - err := godotenv.Load(f) - if err != nil { - log.Fatal("Error loading .env file") - } - port := os.Getenv("PORT") - if port == "" { - log.Fatal("PORT must be set. Consider verify your EnvFile.") - } - return port -} diff --git a/settings/settings.go b/settings/settings.go index 9aa13e0..f0b004b 100644 --- a/settings/settings.go +++ b/settings/settings.go @@ -1,7 +1,47 @@ package settings +import ( + "log" + "os" + + "github.com/joho/godotenv" +) + // EnvFile must be set to the address of the main .env file. const EnvFile string = ".env" -// TmplDir must be set to the address of the templates folder. -const TmplDir string = "templates/" +var params = NewParams(EnvFile) + +// Port exposes the port where the application is served. +var Port = params.port + +// TmplDir exposes the address of the templates folder. +var TmplDir string = params.tmplDir + +// Params struct holds the application settings parameters +type Params struct { + // port exposes the port where the application is served. + port string + // tmplDir must be set to the address of the templates folder. + tmplDir string +} + +// NewParams reads env file then initialize a new Params object +func NewParams(f string) Params { + err := godotenv.Load(f) + if err != nil { + log.Fatal("Error loading .env file") + } + port := getEnvParam("PORT") + tmplDir := getEnvParam("TMPLDIR") + + return Params{port: port, tmplDir: tmplDir} +} + +func getEnvParam(s string) string { + p := os.Getenv(s) + if p == "" { + log.Fatalf("%s must be set. Consider verify your EnvFile.", p) + } + return p +} diff --git a/main_test.go b/settings/settings_test.go similarity index 58% rename from main_test.go rename to settings/settings_test.go index 2d8e2ac..cf5b0c7 100644 --- a/main_test.go +++ b/settings/settings_test.go @@ -1,4 +1,4 @@ -package main +package settings import ( "os" @@ -13,8 +13,8 @@ func TestReadEnv(t *testing.T) { e.Write([]byte("PORT=6543")) defer e.Close() - ans := readEnv(".envTest") - if ans != "6543" { - t.Errorf("readEnv('.envTest') = %s ; want 6543", ans) - } + // ans := NewParams(".envTest") + // if ans.Port() != "6543" { + // t.Errorf("readEnv('.envTest') = %s ; want 6543", ans) + // } }