diff --git a/TODO.md b/TODO.md
index bf0d7a1..f30c6c6 100644
--- a/TODO.md
+++ b/TODO.md
@@ -1,14 +1,12 @@
# TODO
-- Compile templates into binary (with go.rice)
+- Compile templates into binary (with "embed"?)
+- Generate `ek` binary with "reader" command
- Increase ease of use for people who want to try Ekster
- Hosted version??
- Per user backends
-
-
-
-#### Code
+## Code
- Remove dependency between hubIncomingHandler and memoryBackend
- Improve error handling
diff --git a/cmd/eksterd/http.go b/cmd/eksterd/http.go
index a7c0c27..cd6d5a4 100644
--- a/cmd/eksterd/http.go
+++ b/cmd/eksterd/http.go
@@ -1,9 +1,12 @@
package main
import (
+ "embed"
"encoding/json"
"fmt"
+ "html/template"
"io"
+ "io/fs"
"io/ioutil"
"log"
"net/http"
@@ -15,11 +18,13 @@ import (
"p83.nl/go/ekster/pkg/microsub"
"p83.nl/go/ekster/pkg/util"
- "github.com/alecthomas/template"
"github.com/gomodule/redigo/redis"
"willnorris.com/go/microformats"
)
+//go:embed templates/*.html
+var templates embed.FS
+
type mainHandler struct {
Backend *memoryBackend
BaseURL string
@@ -106,7 +111,11 @@ func (h *mainHandler) templateFile(filename string) string {
}
func (h *mainHandler) renderTemplate(w io.Writer, filename string, data interface{}) error {
- t, err := template.ParseFiles(h.templateFile("base.html"), h.templateFile(filename))
+ fsys, err := fs.Sub(templates, "templates")
+ if err != nil {
+ return err
+ }
+ t, err := template.ParseFS(fsys, "base.html", filename)
if err != nil {
return err
}
diff --git a/cmd/eksterd/templates/auth.html b/cmd/eksterd/templates/auth.html
new file mode 100644
index 0000000..d873afd
--- /dev/null
+++ b/cmd/eksterd/templates/auth.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+Ekster
+
+
+
+
+
+
+
+
+
+
Ekster - Microsub server
+
+
+
+
+
+
diff --git a/cmd/eksterd/templates/base.html b/cmd/eksterd/templates/base.html
new file mode 100644
index 0000000..b3a6099
--- /dev/null
+++ b/cmd/eksterd/templates/base.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+ {{template "title" .}}
+
+
+
+
+
+
+
+
Ekster - Microsub server
+
+ {{template "content" .}}
+
+
+
+
+{{define "header"}}{{end}}
+{{define "content"}}{{end}}
+{{define "footer"}}{{end}}
diff --git a/cmd/eksterd/templates/channel.html b/cmd/eksterd/templates/channel.html
new file mode 100644
index 0000000..cfdc0bb
--- /dev/null
+++ b/cmd/eksterd/templates/channel.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+Ekster
+
+
+
+
+
+
+
+
Ekster - Microsub server
+
+ {{ $channel := .CurrentChannel }}
+
+
+
+
{{ $channel.Name }}
+
+
+
+
+
+
Feeds
+
+
+ {{ range .Feeds }}
+
+ {{ else }}
+
No feeds
+ {{ end }}
+
+
+
+
+
+
+
diff --git a/cmd/eksterd/templates/index.html b/cmd/eksterd/templates/index.html
new file mode 100644
index 0000000..98566c7
--- /dev/null
+++ b/cmd/eksterd/templates/index.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+Ekster
+
+
+
+
+
+
+
+
+
+
+
+
+
Ekster - Microsub server
+
+ {{ if .Session.LoggedIn }}
+
Logout
+
+ {{ else }}
+
Sign in to Ekster
+
+ {{ end }}
+
+
+
+
diff --git a/cmd/eksterd/templates/logs.html b/cmd/eksterd/templates/logs.html
new file mode 100644
index 0000000..cea2a57
--- /dev/null
+++ b/cmd/eksterd/templates/logs.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+Ekster
+
+
+
+
+
+
+
+
+
+
Ekster - Microsub server
+
+
Logs
+
+
Logs
+
+
+
+
diff --git a/cmd/eksterd/templates/settings.html b/cmd/eksterd/templates/settings.html
new file mode 100644
index 0000000..ff69516
--- /dev/null
+++ b/cmd/eksterd/templates/settings.html
@@ -0,0 +1,63 @@
+
+
+
+
+
+Ekster
+
+
+
+
+
+
+
+
Ekster - Microsub server
+
+ {{ if .Session.LoggedIn }}
+ {{ end }}
+
+
Channels
+
+
+ {{ range .Channels }}
+
+ {{ else }}
+
No channels
+ {{ end }}
+
+
+
+
+
diff --git a/go.mod b/go.mod
index e3558af..0ef63d8 100644
--- a/go.mod
+++ b/go.mod
@@ -1,10 +1,11 @@
module p83.nl/go/ekster
-go 1.14
+go 1.16
require (
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751
github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394
+ github.com/davecgh/go-spew v1.1.0 // indirect
github.com/gilliek/go-opml v1.0.0
github.com/gomodule/redigo v1.8.2
github.com/lib/pq v1.10.1