]> Lady’s Gitweb - Langdev/blob - GNUmakefile
Move archived files into public/
[Langdev] / GNUmakefile
1 SHELL = /bin/sh
2
3 # This Makefile requires rsync 3 or newer.
4 RSYNC = rsync
5 RSYNC_FLAGS = -Oclmrtvz
6 RSYNC_OPTIONS =
7 RSYNC_FILTER = .rsync-filter
8
9 SOURCE_CHARSET = utf-8-mac
10
11 DESTINATION_HOST = computer
12 DESTINATION_PATH = lady/langdev
13 DESTINATION = $(DESTINATION_HOST):$(DESTINATION_PATH)
14 DESTINATION_CHARSET = utf-8
15
16 GIT_FORCE =
17
18 build:
19 # Put any necessary build scripts in here!
20 touch .grass
21
22 ensure-build:
23 @if [ ! -f .grass ]; then echo 'Error: The website has not been built yet!' >&2; echo 'Run `make` before syncing.' >&2; exit 1; fi
24 @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
25
26 ensure-branch-up-to-date:
27 git fetch
28 @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
29
30 ensure-clean:
31 @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
32
33 dry-sync: ensure-clean$(if $(GIT_FORCE),, ensure-branch-up-to-date) ensure-build
34 cd public && $(RSYNC) $(RSYNC_FLAGS) --del --dry-run --filter=". ../$(RSYNC_FILTER)" --iconv=$(SOURCE_CHARSET),$(DESTINATION_CHARSET) $(RSYNC_OPTIONS) . $(DESTINATION)
35
36 sync: ensure-clean$(if $(GIT_FORCE),, ensure-branch-up-to-date) ensure-build
37 cd public && $(RSYNC) $(RSYNC_FLAGS) --del --filter=". ../$(RSYNC_FILTER)" --iconv=$(SOURCE_CHARSET),$(DESTINATION_CHARSET) $(RSYNC_OPTIONS) . $(DESTINATION)
38 git push$(if $(GIT_FORCE), --force,)
39
40 .PHONY: build dry-sync ensure-branch-up-to-date ensure-build ensure-clean sync;
This page took 0.304687 seconds and 5 git commands to generate.