]> Lady’s Gitweb - Blog/blob - GNUmakefile
3095070b6d0f64ec880db300a74ffb64fc7819dd
[Blog] / GNUmakefile
1 SHELL = /bin/sh
2
3 # © 2023 Lady [@ Lady’s Computer].
4 #
5 # This Source Code Form is subject to the terms of the Mozilla Public
6 # License, v. 2.0. If a copy of the MPL was not distributed with this
7 # file, You can obtain one at https://mozilla.org/MPL/2.0/.
8
9 BEORN_VERSION = 0.1.0
10 BEORN = https://git.ladys.computer/Beorn/blob_plain/$(BEORN_VERSION):/build.js
11
12 # This Makefile requires rsync 3 or newer.
13 RSYNC = rsync
14 RSYNC_FLAGS = -Oclmrtvz
15 RSYNC_OPTIONS =
16 RSYNC_FILTER = .rsync-filter
17
18 SOURCE_CHARSET = utf-8-mac
19
20 DESTINATION_HOST = computer
21 DESTINATION_PATH = lady/www
22 DESTINATION = $(DESTINATION_HOST):$(DESTINATION_PATH)
23 DESTINATION_CHARSET = utf-8
24
25 RSYNC_OPTIONS =
26 SOURCE_CHARSET = utf-8-mac
27 DESTINATION_CHARSET = utf-8
28 DESTINATION_HOST = computer
29 DESTINATION_PATH = lady/blog
30 DESTINATION = $(DESTINATION_HOST):$(DESTINATION_PATH)
31
32 GIT_FORCE =
33
34 build:
35 deno run --allow-read=. --allow-write=. $(BEORN)
36 touch .grass
37
38 ensure-build:
39 @if [ ! -f .grass ]; then echo 'Error: The website has not been built yet!' >&2; echo 'Run `make` before syncing.' >&2; exit 1; fi
40 @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
41
42 ensure-branch-up-to-date:
43 git fetch
44 @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
45
46 ensure-clean:
47 @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
48 @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
49
50 dry-sync: ensure-clean$(if $(GIT_FORCE),, ensure-branch-up-to-date) ensure-build
51 $(RSYNC) $(RSYNC_FLAGS) --del --dry-run --filter=". $(RSYNC_FILTER)" --iconv=$(SOURCE_CHARSET),$(DESTINATION_CHARSET) $(RSYNC_OPTIONS) . $(DESTINATION)
52
53 sync: ensure-clean$(if $(GIT_FORCE),, ensure-branch-up-to-date) ensure-build
54 $(RSYNC) $(RSYNC_FLAGS) --del --filter=". $(RSYNC_FILTER)" --iconv=$(SOURCE_CHARSET),$(DESTINATION_CHARSET) $(RSYNC_OPTIONS) . $(DESTINATION)
55 git push$(if $(GIT_FORCE), --force,)
56
57 .PHONY: build dry-sync ensure-branch-up-to-date ensure-build ensure-clean sync;
This page took 0.127067 seconds and 3 git commands to generate.