- A leading '%' can now be used to ignore files.
- `make serve` can be used to spin up a simple webserver.
YSEME := .π₯π€
YSEMEOPTS := $(MAKEOPTS) BUILDTARGET='$(BUILDTARGET)' DESTDIR='$(DESTDIR)' SERVERPATH='lady/vocab'
YSEME := .π₯π€
YSEMEOPTS := $(MAKEOPTS) BUILDTARGET='$(BUILDTARGET)' DESTDIR='$(DESTDIR)' SERVERPATH='lady/vocab'
-xmls := $(wildcard $(DATADIR)/*/*)
+PORT := 3000
+
+xmls := $(wildcard $(DATADIR)/*/[0-9A-Za-z_]*) $(wildcard $(DATADIR)/*/Β¦*)
# β Β§ Call out to β©π° δΉ¦η€Ύ ββββββββββββββββββββββββββββββββββββββββββ
# β Β§ Call out to β©π° δΉ¦η€Ύ ββββββββββββββββββββββββββββββββββββββββββ
.IGNORE : $(foreach xml,$(xmls),lint][$(xml)) ;
.IGNORE : $(foreach xml,$(xmls),lint][$(xml)) ;
-.PHONY : FORCE build clean dry-sync gone lint $(foreach xml,$(xmls),lint][$(xml)) list prebuild sync uninstall ;
+.PHONY : FORCE build clean dry-sync gone lint $(foreach xml,$(xmls),lint][$(xml)) list prebuild serve sync uninstall ;
+serve :
+ @printf '%b\n' '\0033[1m\n\0033[7m NOTE: \0033[27m Visit <http://localhost:$(PORT)/> to view the site.\n\0033[7m \0033[27m \n\0033[7m \0033[27m Press control + C to exit.\n\0033[22m' >&2
+ @ruby ./scripts/serve.rb $(PORT) >&2
+
uninstall :
@for publicfile in $(patsubst %,"%",$(wildcard $(DESTDIR)/*)); do if $(GIT) check-ignore -q "$$publicfile"; then $(RM) -rf "$$publicfile"; fi; done
uninstall :
@for publicfile in $(patsubst %,"%",$(wildcard $(DESTDIR)/*)); do if $(GIT) check-ignore -q "$$publicfile"; then $(RM) -rf "$$publicfile"; fi; done
--- /dev/null
+#!/usr/bin/ruby
+# SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+# SPDX-License-Identifier: CC0-1.0
+
+require "webrick"
+
+server = WEBrick::HTTPServer.new(Port: ARGV[0] || 3000, DocumentRoot: "public", DirectoryIndex: ["index.xhtml"])
+trap 'INT' do server.shutdown end
+
+class XHTMLHandler < WEBrick::HTTPServlet::DefaultFileHandler
+ def do_GET request, response
+ super
+ response['Content-Type'] = 'application/xhtml+xml'
+ end
+end
+WEBrick::HTTPServlet::FileHandler.add_handler("xhtml", XHTMLHandler)
+
+server.start