cripslock

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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:
MMakefile | 14+++++---------
Acripslock.fnl | 3+++
Mdefault.nix | 9++++++++-
Mmain.fnl | 7+++++--
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)))