From 40900f3112f31276dc1dafc6997ef3ce1d881975 Mon Sep 17 00:00:00 2001 From: Guilherme Rugai Freire Date: Tue, 20 Feb 2024 16:13:44 -0300 Subject: [PATCH] add templ and initial frontend code --- .gitignore | 1 + bin/.gitkeep | 0 cmd/web_server/index.templ | 5 +++++ cmd/web_server/main.go | 12 ++++++++++-- go.mod | 1 + go.sum | 2 ++ run-web.sh | 31 +++++++++++++++++++++++++++++++ 7 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 bin/.gitkeep create mode 100644 cmd/web_server/index.templ create mode 100755 run-web.sh diff --git a/.gitignore b/.gitignore index 11ce881..235f5e7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ bin/* !bin/.gitkeep +*_templ.go *.db diff --git a/bin/.gitkeep b/bin/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/cmd/web_server/index.templ b/cmd/web_server/index.templ new file mode 100644 index 0000000..5a59fd3 --- /dev/null +++ b/cmd/web_server/index.templ @@ -0,0 +1,5 @@ +package main + +templ index(appname string) { +

Home for { appname }

+} diff --git a/cmd/web_server/main.go b/cmd/web_server/main.go index ed5717a..09e60b7 100644 --- a/cmd/web_server/main.go +++ b/cmd/web_server/main.go @@ -29,6 +29,11 @@ func main() { router := chi.NewRouter() + router.Get("/", func(res http.ResponseWriter, req *http.Request) { + component := index("nthmail.xyz") + component.Render(req.Context(), res) + }) + router.Get("/{rcpt-addr}", func(res http.ResponseWriter, req *http.Request) { rcpt_addr := chi.URLParam(req, "rcpt-addr") if len(rcpt_addr) == 0 { @@ -78,7 +83,7 @@ func main() { return } - mails = append(mails, m) + mails = append(mails, m) } b, err := json.Marshal(mails) if err != nil { @@ -104,5 +109,8 @@ func main() { } log.Println("Listening on port", port) - http.ListenAndServe(fmt.Sprintf(":%d", port), router) + err = http.ListenAndServe(fmt.Sprintf(":%d", port), router) + if err != nil { + log.Fatal(err) + } } diff --git a/go.mod b/go.mod index cc1c17d..653022b 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module github.com/GRFreire/nthmail go 1.21.6 require ( + github.com/a-h/templ v0.2.543 // indirect github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 // indirect github.com/emersion/go-smtp v0.20.2 // indirect github.com/go-chi/chi v1.5.5 // indirect diff --git a/go.sum b/go.sum index d602b0e..f8a1cec 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +github.com/a-h/templ v0.2.543 h1:8YyLvyUtf0/IE2nIwZ62Z/m2o2NqwhnMynzOL78Lzbk= +github.com/a-h/templ v0.2.543/go.mod h1:jP908DQCwI08IrnTalhzSEH9WJqG/Q94+EODQcJGFUA= github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 h1:OJyUGMJTzHTd1XQp98QTaHernxMYzRaOasRir9hUlFQ= github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21/go.mod h1:iL2twTeMvZnrg54ZoPDNfJaJaqy0xIQFuBdrLsmspwQ= github.com/emersion/go-smtp v0.20.2 h1:peX42Qnh5Q0q3vrAnRy43R/JwTnnv75AebxbkTL7Ia4= diff --git a/run-web.sh b/run-web.sh new file mode 100755 index 0000000..d7b4b98 --- /dev/null +++ b/run-web.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +watch_dir="cmd/web_server" +pid=0 + +get_ts() { + stat "$watch_dir" | grep Modify | awk '{$1=""; print $0}' | sed 's/^ //g' +} + +run_server() { + make -B web + ./bin/web_server & + pid=$! +} + +ts="$(get_ts)" +run_server + +while true; do + sleep 1; + new_ts="$(get_ts)" + if [ "$ts" != "$new_ts" ]; then + ts="$new_ts" + echo "" + if [ "$pid" != "0" ]; then + kill -s KILL $pid + fi + run_server + fi +done +