Embed static assets in binary

This embeds assets from the static/ dir in the binary and serves them.

Ref T536
This commit is contained in:
Matt Baer 2018-12-25 10:30:22 -05:00
parent d4a08723aa
commit ec5616b2c3
3 changed files with 18 additions and 5 deletions

2
.gitignore vendored
View File

@ -5,3 +5,5 @@
build
config.ini
*.db
bindata.go

View File

@ -12,7 +12,7 @@ IMAGE_NAME=writeas/writefreely
all : build
build: deps
build: assets deps
cd cmd/writefreely; $(GOBUILD) -v
build-linux: deps
@ -50,11 +50,10 @@ install : build
cmd/writefreely/$(BINARY_NAME) --gen-keys
cd less/; $(MAKE) install $(MFLAGS)
release : clean ui
release : clean ui assets
mkdir build
cp -r templates build
cp -r pages build
cp -r static build
mkdir build/keys
cp schema.sql build
cp sqlite.sql build
@ -78,6 +77,17 @@ release-docker :
ui : force_look
cd less/; $(MAKE) $(MFLAGS)
assets : generate
go-bindata -pkg writefreely -ignore=\\.gitignore static/...
dev-assets : generate
go-bindata -pkg writefreely -ignore=\\.gitignore -debug static/...
generate :
@hash go-bindata > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
$(GOGET) -u github.com/jteeuwen/go-bindata/...; \
fi
clean :
-rm -rf build
cd less/; $(MAKE) clean $(MFLAGS)

5
app.go
View File

@ -27,6 +27,7 @@ import (
_ "github.com/go-sql-driver/mysql"
_ "github.com/mattn/go-sqlite3"
"github.com/elazarl/go-bindata-assetfs"
"github.com/gorilla/mux"
"github.com/gorilla/schema"
"github.com/gorilla/sessions"
@ -41,7 +42,7 @@ import (
)
const (
staticDir = "static/"
staticDir = "static"
assumedTitleLen = 80
postsPerPage = 10
@ -411,7 +412,7 @@ func Serve() {
}
// Handle static files
fs := http.FileServer(http.Dir(staticDir))
fs := http.FileServer(&assetfs.AssetFS{Asset: Asset, AssetDir: AssetDir, AssetInfo: AssetInfo, Prefix: staticDir})
shttp.Handle("/", fs)
r.PathPrefix("/").Handler(fs)