aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--git2d_deploy.go2
-rw-r--r--git_hooks_deploy.go2
-rw-r--r--http_server.go4
-rw-r--r--main.go11
-rw-r--r--resources.go26
-rw-r--r--server.go9
6 files changed, 27 insertions, 27 deletions
diff --git a/git2d_deploy.go b/git2d_deploy.go
index f3a4cc9..ba63a1b 100644
--- a/git2d_deploy.go
+++ b/git2d_deploy.go
@@ -13,7 +13,7 @@ func (s *server) deployGit2D() (err error) {
var srcFD fs.File
var dstFD *os.File
- if srcFD, err = resourcesFS.Open("git2d/git2d"); err != nil {
+ if srcFD, err = embeddedResourcesFS.Open("git2d/git2d"); err != nil {
return err
}
defer srcFD.Close()
diff --git a/git_hooks_deploy.go b/git_hooks_deploy.go
index ea11d0c..0cfb4f9 100644
--- a/git_hooks_deploy.go
+++ b/git_hooks_deploy.go
@@ -19,7 +19,7 @@ func (s *server) deployHooks() (err error) {
var srcFD fs.File
var dstFD *os.File
- if srcFD, err = resourcesFS.Open("hookc/hookc"); err != nil {
+ if srcFD, err = embeddedResourcesFS.Open("hookc/hookc"); err != nil {
return err
}
defer srcFD.Close()
diff --git a/http_server.go b/http_server.go
index ae82241..7341929 100644
--- a/http_server.go
+++ b/http_server.go
@@ -87,10 +87,10 @@ func (s *server) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
switch segments[1] {
case "static":
- staticHandler.ServeHTTP(writer, request)
+ s.staticHandler.ServeHTTP(writer, request)
return
case "source":
- sourceHandler.ServeHTTP(writer, request)
+ s.sourceHandler.ServeHTTP(writer, request)
return
}
}
diff --git a/main.go b/main.go
index 4527825..8eca6a7 100644
--- a/main.go
+++ b/main.go
@@ -6,6 +6,7 @@ package main
import (
"errors"
"flag"
+ "io/fs"
"log"
"log/slog"
"net"
@@ -26,6 +27,16 @@ func main() {
s := server{}
+ s.sourceHandler = http.StripPrefix(
+ "/-/source/",
+ http.FileServer(http.FS(embeddedSourceFS)),
+ )
+ staticFS, err := fs.Sub(embeddedResourcesFS, "static")
+ if err != nil {
+ panic(err)
+ }
+ s.staticHandler = http.StripPrefix("/-/static/", http.FileServer(http.FS(staticFS)))
+
if err := s.loadConfig(*configPath); err != nil {
slog.Error("loading configuration", "error", err)
os.Exit(1)
diff --git a/resources.go b/resources.go
index 00d7b66..b626f8d 100644
--- a/resources.go
+++ b/resources.go
@@ -7,7 +7,6 @@ import (
"embed"
"html/template"
"io/fs"
- "net/http"
"github.com/tdewolff/minify/v2"
"github.com/tdewolff/minify/v2/html"
@@ -15,16 +14,11 @@ import (
)
//go:embed LICENSE source.tar.gz
-var sourceFS embed.FS
-
-var sourceHandler = http.StripPrefix(
- "/-/source/",
- http.FileServer(http.FS(sourceFS)),
-)
+var embeddedSourceFS embed.FS
//go:embed templates/* static/*
//go:embed hookc/hookc git2d/git2d
-var resourcesFS embed.FS
+var embeddedResourcesFS embed.FS
var templates *template.Template
@@ -45,12 +39,12 @@ func loadTemplates() (err error) {
"minus": minus,
})
- err = fs.WalkDir(resourcesFS, "templates", func(path string, d fs.DirEntry, err error) error {
+ err = fs.WalkDir(embeddedResourcesFS, "templates", func(path string, d fs.DirEntry, err error) error {
if err != nil {
return err
}
if !d.IsDir() {
- content, err := fs.ReadFile(resourcesFS, path)
+ content, err := fs.ReadFile(embeddedResourcesFS, path)
if err != nil {
return err
}
@@ -69,15 +63,3 @@ func loadTemplates() (err error) {
})
return err
}
-
-var staticHandler http.Handler
-
-// This init sets up static handlers. The resulting handlers must be
-// used in the HTTP router, and do nothing unless called from elsewhere.
-func init() {
- staticFS, err := fs.Sub(resourcesFS, "static")
- if err != nil {
- panic(err)
- }
- staticHandler = http.StripPrefix("/-/static/", http.FileServer(http.FS(staticFS)))
-}
diff --git a/server.go b/server.go
index 1113740..7dbca97 100644
--- a/server.go
+++ b/server.go
@@ -1,6 +1,10 @@
package main
-import "github.com/jackc/pgx/v5/pgxpool"
+import (
+ "net/http"
+
+ "github.com/jackc/pgx/v5/pgxpool"
+)
type server struct {
config Config
@@ -9,4 +13,7 @@ type server struct {
// Transactions or single reads may be used from it. A [pgxpool.Pool] is
// necessary to safely use pgx concurrently; pgx.Conn, etc. are insufficient.
database *pgxpool.Pool
+
+ sourceHandler http.Handler
+ staticHandler http.Handler
}