DOCKER ?=
PHP ?= $(DOCKER) php
COMPOSER ?= $(DOCKER) composer
TAG := $(shell (git describe --tags --match=v[0-9]*  2>/dev/null || git tag --sort=authordate | egrep ^v[0-9] | tail -n1) | cut -d. -f-2)

# ---

SPECIAL_SRC := \
  src/mdref.json \
  src/ion.md \
  src/ion/\\\:\\\ Contributing.md \
  src/ion/\\\:\\\ Security.md \
  tutorial

# ---

.PHONY: all
all: latest

latest: $(TAG)
	-unlink $@ 2>/dev/null
	ln -s "$(TAG)/" $@
	touch $@

$(TAG): markdown | vendor/bin/ref2html
	mkdir -p $@
	-ln -s . ext-ion
	$(PHP) $| ext-ion/$@ src
	unlink ext-ion
	touch $@

.PHONY: markdown
markdown: src/ion.stub.php $(SPECIAL_SRC) | vendor/bin/stub2ref
	$(PHP) $| ion $< src

src src/ion src/ion/\\\:\\\ Tutorial:
	-mkdir -p $@
src/mdref.json: mdref.json
	-test -e $@ || ln $^ $@
src/ion.stub.php: ../ion.stub.php | src
	-test -e $@ || ln $^ $@
src/ion.md: ../README.md | src
	-test -e $@ || ln $^ $@
src/ion/\\\:\\\ Contributing.md: ../CONTRIBUTING.md | src/ion
	-test -e $@ || ln $^ $@
src/ion/\\\:\\\ Security.md: ../SECURITY.md | src/ion
	-test -e $@ || ln $^ $@

.PHONY: tutorial
tutorial: | src/ion
	cp -R tutorial/* src/ion/

vendor/%:
	COMPOSER= $(COMPOSER) require m6w6/mdref:dev-master

.PHONY: docker
docker:
	docker-compose -f docker/compose.yml build php
	docker-compose -f docker/compose.yml build composer
	$(MAKE) DOCKER="docker-compose -f docker/compose.yml run --rm"

.PHONY: clean
clean:
	-rm -rf latest src vendor composer* .composer
