X-Git-Url: https://git.ladys.computer/WWW/blobdiff_plain/ad249fcdf0bf13bc6abaa97a80fc63b8de002601..03da40f109bb0955e043167ef4658aad93e8b268:/GNUmakefile diff --git a/GNUmakefile b/GNUmakefile index 93fb66e..b40c209 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -1,6 +1,6 @@ SHELL = /bin/sh -# © 2023 Lady [@ Lady’s Computer]. +# © 2023–2024 Lady [@ Lady’s Computer]. # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this @@ -19,10 +19,19 @@ DESTINATION_PATH = lady/www DESTINATION = $(DESTINATION_HOST):$(DESTINATION_PATH) DESTINATION_CHARSET = utf-8 +GIT_FORCE = + +SHUSHE = .shushe +SHUSHE_OPTIONS = 'INCLUDEDIR=sources/INCLUDE' 'TRANSFORMS=$(wildcard transforms/*.xslt) $(wildcard $(SHUSHE)/transforms/*.xslt)' + build: -# Put any necessary build scripts in here! + rm -rf ./public + @$(MAKE) -f $(SHUSHE)/GNUmakefile install $(SHUSHE_OPTIONS) touch .grass +list: + @$(MAKE) -f $(SHUSHE)/GNUmakefile list $(SHUSHE_OPTIONS) + 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 @@ -34,11 +43,11 @@ ensure-branch-up-to-date: 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: ensure-clean ensure-branch-up-to-date ensure-build - $(RSYNC) $(RSYNC_FLAGS) --del --dry-run --filter=". $(RSYNC_FILTER)" --iconv=$(SOURCE_CHARSET),$(DESTINATION_CHARSET) $(RSYNC_OPTIONS) . $(DESTINATION) +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) -sync: ensure-clean ensure-branch-up-to-date ensure-build - $(RSYNC) $(RSYNC_FLAGS) --del --filter=". $(RSYNC_FILTER)" --iconv=$(SOURCE_CHARSET),$(DESTINATION_CHARSET) $(RSYNC_OPTIONS) . $(DESTINATION) - git push --force +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,) .PHONY: build dry-sync ensure-branch-up-to-date ensure-build ensure-clean sync;