]> Lady’s Gitweb - WWW/blobdiff - GNUmakefile
Update β›©πŸ“° δΉ¦η€Ύ and makeΒ·file; minor reΒ·organizations
[WWW] / GNUmakefile
index b40c2091f0c574e620ac32c5dee328fe364cf5fa..8486bff345286e3cd4c18f7884f72803f1b79043 100644 (file)
@@ -6,48 +6,48 @@ SHELL = /bin/sh
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at https://mozilla.org/MPL/2.0/.
 
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at https://mozilla.org/MPL/2.0/.
 
-# This Makefile requires rsync 3 or newer.
-RSYNC = rsync
-RSYNC_FLAGS = -Oclmrtvz
-RSYNC_OPTIONS =
-RSYNC_FILTER = .rsync-filter
+SRCDIR := sources
+BUILDDIR := build
+BUILDTARGET := .grass
+DESTDIR := public
 
 
-SOURCE_CHARSET = utf-8-mac
+SHUSHE := .β›©πŸ“°
+SHUSHEOPTS := SRCDIR='$(SRCDIR)' INCLUDEDIR='$(SRCDIR)/{include}' EXTRAPARSERS='$(wildcard parsers/*.xslt)' EXTRATRANSFORMS='$(wildcard transforms/*.xslt)'
 
 
-DESTINATION_HOST = computer
-DESTINATION_PATH = lady/www
-DESTINATION = $(DESTINATION_HOST):$(DESTINATION_PATH)
-DESTINATION_CHARSET = utf-8
+YSEME := .πŸ‘₯πŸ“€
+YSEMEOPTS := BUILDTARGET='.grass' DESTDIR='$(DESTDIR)' SERVERPATH='lady/www'
 
 
-GIT_FORCE =
+# β” Β§ Call out to β›©πŸ“° δΉ¦η€Ύ β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”
 
 
-SHUSHE = .shushe
-SHUSHE_OPTIONS = 'INCLUDEDIR=sources/INCLUDE' 'TRANSFORMS=$(wildcard transforms/*.xslt) $(wildcard $(SHUSHE)/transforms/*.xslt)'
+build : $(SHUSHE)/GNUmakefile prebuild
+       @for publicfile in $(patsubst %,"%",$(wildcard $(DESTDIR)/*)); do if git check-ignore -q "$$publicfile"; then rm -rf "$$publicfile"; fi; done
+       @$(MAKE) -f '$<' install $(SHUSHEOPTS)
+       @touch '$(BUILDTARGET)'
 
 
-build:
-       rm -rf ./public
-       @$(MAKE) -f $(SHUSHE)/GNUmakefile install $(SHUSHE_OPTIONS)
-       touch .grass
+prebuild : $(SHUSHE)/GNUmakefile
+       @$(MAKE) -f '$<' $(SHUSHEOPTS)
 
 
-list:
-       @$(MAKE) -f $(SHUSHE)/GNUmakefile list $(SHUSHE_OPTIONS)
+list : $(SHUSHE)/GNUmakefile
+       @$(MAKE) -f '$<' $@ $(SHUSHEOPTS)
 
 
-ensure-build:
-       @if [ ! -f .grass ]; then echo 'Error: The website has not been built yet!' >&2; echo 'Run `make` before syncing.' >&2; exit 1; fi
-       @if buildtime=$$(stat -f '%m' .grass) && committime=$$(git log -1 --format='%ct' | awk '{print $$NF}') && [ "$$committime" -gt "$$buildtime" ]; then echo 'Error: A commit was made after the last build!' >&2; echo 'Run `make` before syncing.' >&2; exit 1; fi
+$(BUILDDIR)/% $(DESTDIR)/% : $(SHUSHE)/GNUmakefile
+       @$(MAKE) -f '$<' $@ $(SHUSHEOPTS)
 
 
-ensure-branch-up-to-date:
-       git fetch
-       @if ! git merge-base --is-ancestor @{u} HEAD; then echo 'Error: This branch is currently out‐of‐date!' >&2; echo 'Pull in changes with `git pull` before syncing.' >&2; exit 1; fi
+# β” Β§ Call out to πŸ‘₯πŸ“€ Yseme β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”
 
 
-ensure-clean:
-       @if output=$$(git status --porcelain) && [ ! -z "$$output" ]; then echo 'Error: There are uncommitted changes!' >&2; echo 'Commit changes and run `make` before syncing.' >&2; exit 1; fi
+dry-sync sync : $(YSEME)/GNUmakefile
+       $(MAKE) -f '$<' $@ $(YSEMEOPTS)
 
 
-dry-sync: ensure-clean$(if $(GIT_FORCE),, ensure-branch-up-to-date) ensure-build
-       cd public && $(RSYNC) $(RSYNC_FLAGS) --del --dry-run --filter=". ../$(RSYNC_FILTER)" --iconv=$(SOURCE_CHARSET),$(DESTINATION_CHARSET) $(RSYNC_OPTIONS) . $(DESTINATION)
+# β” Β§ Special targets β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”
 
 
-sync: ensure-clean$(if $(GIT_FORCE),, ensure-branch-up-to-date) ensure-build
-       cd public && $(RSYNC) $(RSYNC_FLAGS) --del --filter=". ../$(RSYNC_FILTER)" --iconv=$(SOURCE_CHARSET),$(DESTINATION_CHARSET) $(RSYNC_OPTIONS) . $(DESTINATION)
-       git push$(if $(GIT_FORCE), --force,)
+gone :
+       @for publicfile in $(patsubst %,"%",$(wildcard $(DESTDIR)/*)); do if git check-ignore -q "$$publicfile"; then rm -rf "$$publicfile"; fi; done
 
 
-.PHONY: build dry-sync ensure-branch-up-to-date ensure-build ensure-clean sync;
+FORCE : ;
+
+.PHONY : FORCE build dry-sync gone list prebuild sync ;
+
+# β” Β§ MakeΒ·file targets β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”β”
+
+$(SHUSHE)/GNUmakefile $(YSEME)/GNUmakefile : %/GNUmakefile : FORCE
+       git submodule update --init '$*'
This page took 0.231719 seconds and 4 git commands to generate.