Embed schema files in binary

This includes schema.sql and sqlite.sql in the release binary, so they
no longer need to be included in the release archives. This reduces the
number of files extracted, but otherwise leaves all functionality as it
was -- especially the --init-db flag.

Ref T536
This commit is contained in:
Matt Baer 2018-12-30 20:10:42 -05:00
parent d4a08723aa
commit 739afd2310
3 changed files with 17 additions and 8 deletions

2
.gitignore vendored
View File

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

View File

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

4
app.go
View File

@ -14,7 +14,6 @@ import (
"flag" "flag"
"fmt" "fmt"
"html/template" "html/template"
"io/ioutil"
"net/http" "net/http"
"net/url" "net/url"
"os" "os"
@ -270,12 +269,11 @@ func Serve() {
defer shutdown(app) defer shutdown(app)
schemaFileName := "schema.sql" schemaFileName := "schema.sql"
if app.cfg.Database.Type == "sqlite3" { if app.cfg.Database.Type == "sqlite3" {
schemaFileName = "sqlite.sql" schemaFileName = "sqlite.sql"
} }
schema, err := ioutil.ReadFile(schemaFileName) schema, err := Asset(schemaFileName)
if err != nil { if err != nil {
log.Error("Unable to load schema file: %v", err) log.Error("Unable to load schema file: %v", err)
os.Exit(1) os.Exit(1)