commit 190b34f93af90f986cb598b8fc7f73ba3ccdaf45
parent 994735dda164700c6b1f9496a9603e5b0ab63195
Author: Daniel Barlow <dan@telent.net>
Date: Wed, 6 Aug 2025 23:38:33 +0100
make a cripslock executable for ease of deploying the thing
Diffstat:
4 files changed, 21 insertions(+), 12 deletions(-)
diff --git a/Makefile b/Makefile
@@ -2,14 +2,9 @@ FENNEL?=fennel
PREFIX?=/usr/local
NAME?=cripslock
-MODULES=main.fnl textile.fnl site.fnl html.fnl lib.fnl rss.fnl
+MODULES=main.fnl textile.fnl site.fnl html.fnl lib.fnl rss.fnl server.fnl
-%.lua : %.fnl
- $(FENNEL) --compile $< > $@
-
-$(NAME): $(patsubst %.fnl,%.lua,$(MODULES)) Makefile
- (echo -e "#!/usr/bin/env lua\n" ; cat main.lua ) > $@
- chmod +x $@
+default:
run:
fennel --correlate -e '((. (require :main) :run) "data/blogs/telent.blog/posts/") '
@@ -18,5 +13,6 @@ test:
fennel --correlate run-tests.fnl $(MODULES)
install:
- mkdir -p $(PREFIX)/bin $(PREFIX)/
- cp $(NAME) $(PREFIX)/bin
+ mkdir -p $(PREFIX)/bin $(PREFIX)/lib
+ install $(NAME).fnl $(PREFIX)/bin/$(NAME)
+ cp $(MODULES) assert.fnl $(PREFIX)/lib
diff --git a/cripslock.fnl b/cripslock.fnl
@@ -0,0 +1,3 @@
+#!/usr/bin/env fennel
+
+((. (require :main) :run) ...)
diff --git a/default.nix b/default.nix
@@ -40,12 +40,19 @@ in stdenv.mkDerivation {
buildInputs = [
lua
+ fennel
];
nativeBuildInputs = [
makeWrapper
- fennel
];
+ postInstall = ''
+ wrapProgram $out/bin/${pname} \
+ --set LUA_PATH "$(lua -e 'print(package.path)')" \
+ --set FENNEL_PATH "$out/lib/?.fnl" \
+ --set FENNEL_MACRO_PATH "$out/lib/?.fnl" \
+ --set LUA_CPATH "$(lua -e 'print(package.cpath)')"
+ '';
makeFlags = [ "PREFIX=${placeholder "out"}" "NAME=${pname}" ];
passthru = {
diff --git a/main.fnl b/main.fnl
@@ -302,10 +302,13 @@ href=\"https://axillae.telent.net/\">@dan@axillae.telent.net</a>
(dispatch route stream collection)
(server.headers stream { ":status" :404 } true))))
-(fn run [path]
+(fn run [path port]
(let [event-loop (cqueues.new)
collection (site.for-pathname path)
- myserver (server.new { :onstream (partial http-handler collection) })]
+ myserver (server.new
+ { :onstream (partial http-handler collection)
+ :port (and port (tonumber port))
+ })]
(event-loop:wrap #(myserver:loop))
(event-loop:wrap #(collection:watch))
(event-loop:loop)))