From c7cb8285ea8771a100eedaa63e70d87136b8973d Mon Sep 17 00:00:00 2001 From: Doug Hoyte Date: Thu, 7 Sep 2023 14:44:50 -0400 Subject: [PATCH] bring static files into regular build process --- src/apps/web/WebReader.cpp | 13 ++++++++++++- src/apps/web/golpe.yaml | 3 +++ src/apps/web/rules.mk | 22 +++++++++++++++++++++- src/apps/web/static/.gitignore | 1 - src/apps/web/static/Makefile | 19 ------------------- 5 files changed, 36 insertions(+), 22 deletions(-) delete mode 100644 src/apps/web/static/.gitignore delete mode 100644 src/apps/web/static/Makefile diff --git a/src/apps/web/WebReader.cpp b/src/apps/web/WebReader.cpp index 1a0029f..bbb45b1 100644 --- a/src/apps/web/WebReader.cpp +++ b/src/apps/web/WebReader.cpp @@ -263,6 +263,17 @@ HTTPResponse WebServer::generateReadResponse(lmdb::txn &txn, Decompressor &decom } } else if (u.path[0] == "post") { body = tmpl::newPost(nullptr); + } else if (u.path[0] == "static" && u.path.size() >= 2) { + if (u.path[1] == "oddbean.js") { + rawBody = std::string(oddbeanStatic__oddbean_js()); + contentType = "application/javascript"; + } else if (u.path[1] == "oddbean.css") { + rawBody = std::string(oddbeanStatic__oddbean_css()); + contentType = "text/css"; + } else if (u.path[1] == "oddbean.svg") { + rawBody = std::string(oddbeanStatic__oddbean_svg()); + contentType = "image/svg+xml"; + } } @@ -282,7 +293,7 @@ HTTPResponse WebServer::generateReadResponse(lmdb::txn &txn, Decompressor &decom *body, communitySpec, title, - "http://127.0.0.1:8081", + cfg().web__staticFilesPrefix.size() ? cfg().web__staticFilesPrefix : "/static", }; responseData = std::move(tmpl::main(ctx).str); diff --git a/src/apps/web/golpe.yaml b/src/apps/web/golpe.yaml index 7ccac2b..df06ead 100644 --- a/src/apps/web/golpe.yaml +++ b/src/apps/web/golpe.yaml @@ -10,3 +10,6 @@ config: - name: web__homepageCommunity desc: "Community descriptor for homepage" default: "" + - name: web__staticFilesPrefix + desc: "URL or relative path prefix to use for static files (empty string to use versions embedded in binary)" + default: "" diff --git a/src/apps/web/rules.mk b/src/apps/web/rules.mk index 62a72d0..8e9c05b 100644 --- a/src/apps/web/rules.mk +++ b/src/apps/web/rules.mk @@ -1,6 +1,26 @@ build/WebTemplates.h: $(shell find src/apps/web/tmpls/ -type f -name '*.tmpl') perl golpe/external/templar/templar.pl src/apps/web/tmpls/ tmpl $@ -src/apps/web/WebReader.o: build/WebTemplates.h +src/apps/web/WebReader.o: build/WebTemplates.h build/WebStaticFiles.h LDLIBS += -lre2 + + + + +build/web-static/oddbean.css: src/apps/web/static/reset.css src/apps/web/static/oddbean.css + mkdir -p build/web-static/ + cat $^ | sassc -s -t compressed > $@ + gzip -k9f $@ + +build/web-static/oddbean.js: src/apps/web/static/base.ts src/apps/web/static/turbo.js src/apps/web/static/oddbean.js src/apps/web/static/alpine.js + mkdir -p build/web-static/ + cat $^ | esbuild --loader=ts --minify > $@ + gzip -k9f $@ + +build/web-static/oddbean.svg: src/apps/web/static/oddbean.svg + cp $^ $@ + gzip -k9f $@ + +build/WebStaticFiles.h: build/web-static/oddbean.css build/web-static/oddbean.js build/web-static/oddbean.svg + perl golpe/external/hoytech-cpp/dirToCppHeader.pl build/web-static/ oddbeanStatic > $@ diff --git a/src/apps/web/static/.gitignore b/src/apps/web/static/.gitignore deleted file mode 100644 index 84c048a..0000000 --- a/src/apps/web/static/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build/ diff --git a/src/apps/web/static/Makefile b/src/apps/web/static/Makefile deleted file mode 100644 index 4fe8fc5..0000000 --- a/src/apps/web/static/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -CSS := reset.css oddbean.css -JS := base.ts turbo.js oddbean.js alpine.js - -.PHONY: all css js logo - -all: css js logo - -css: $(CSS) - mkdir -p build/ - cat $(CSS) | sassc -s -t compressed > build/oddbean.css - gzip -k9f build/oddbean.css - -js: $(JS) - mkdir -p build/ - cat $(JS) | esbuild --loader=ts --minify > build/oddbean.js - gzip -k9f build/oddbean.js - -logo: - cp oddbean.svg build/