# --- Web Sources --- REDBEAN_URL = https://redbean.dev/redbean-3.0.0.com FM_URL = https://raw.githubusercontent.com/pkulchenko/fullmoon/master/fullmoon.lua HTMX_URL = https://cdn.jsdelivr.net/npm/htmx.org@2.0.10/dist/htmx.min.js HLJS_URL = https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/highlight.min.js PLEX_SERIF = https://github.com/IBM/plex/raw/master/IBM-Plex-Serif/fonts/complete/ttf PLEX_MONO = https://github.com/IBM/plex/raw/master/IBM-Plex-Mono/fonts/complete/ttf # --- Targets --- TARGET = blog.com UPSTREAM_BIN = .deps/redbean.com LUA_DIR = .lua ASSET_DIR = static LOCAL_LUA = .init.lua $(wildcard $(LUA_DIR)/*.lua) LOCAL_ASSET = $(wildcard $(ASSET_DIR)/*) FILES = .init.lua .lua static FONTS = $(ASSET_DIR)/plex-serif-400.ttf \ $(ASSET_DIR)/plex-serif-500.ttf \ $(ASSET_DIR)/plex-mono-400.ttf \ $(ASSET_DIR)/plex-mono-500.ttf .PHONY: all clean fetch build setup all: $(TARGET) $(LUA_DIR) $(ASSET_DIR) .deps: @mkdir -p $@ fetch: .deps/redbean.com $(LUA_DIR)/fm.lua $(ASSET_DIR)/htmx.min.js $(ASSET_DIR)/highlight.min.js fetch-fonts .deps/redbean.com: | .deps curl -L $(REDBEAN_URL) -o $@ chmod +x $@ $(LUA_DIR)/fm.lua: | $(LUA_DIR) curl -L $(FM_URL) -o $@ $(ASSET_DIR)/htmx.min.js: | $(ASSET_DIR) curl -L $(HTMX_URL) -o $@ $(ASSET_DIR)/highlight.min.js: | $(ASSET_DIR) curl -L $(HLJS_URL) -o $@ fetch-fonts: | $(ASSET_DIR) @echo "Fetching fonts..." curl -L $(PLEX_SERIF)/IBMPlexSerif-Regular.ttf -o $(ASSET_DIR)/plexserif400.ttf curl -L $(PLEX_SERIF)/IBMPlexSerif-Medium.ttf -o $(ASSET_DIR)/plexserif500.ttf curl -L $(PLEX_MONO)/IBMPlexMono-Regular.ttf -o $(ASSET_DIR)/plexmono400.ttf curl -L $(PLEX_MONO)/IBMPlexMono-Medium.ttf -o $(ASSET_DIR)/plexmono500.ttf $(TARGET): fetch $(LOCAL_LUA) $(LOCAL_ASSET) cp $(UPSTREAM_BIN) $(TARGET) zip -r $(TARGET) .init.lua $(LUA_DIR)/ $(ASSET_DIR)/ @echo "Build complete: $(TARGET)" setup: $(TARGET) ./$(TARGET) -i setup_admin.lua clean: rm -f $(TARGET) rm -f .lua/fm.lua rm -f static/htmx.min.js rm -f static/highlight.min.js rm -f $(FONTS) rm -f blog.db rm -rf .deps