# Makefile for src
#
# SPDX-FileCopyrightText: Copyright Eric S. Raymond <esr@thyrsus.com>
# SPDX-License-Identifier: BSD-2-Clause

prefix?=/usr/local
mandir?=/share/man
target=$(DESTDIR)$(prefix)

VERS=$(shell ./src version | sed -n -e "/src: /s///p")

SOURCES = README.adoc INSTALL.adoc COPYING NEWS.adoc TODO.adoc src srctest tapview src.adoc FAQ.adoc Makefile control

all: src.1

check: pylint shellcheck
	@./srctest | ./tapview

coverage:
	@./srctest -c coverage-data | ./tapview
	@coverage report --data-file=coverage-data | grep src
	@coverage html --data-file=coverage-data

.SUFFIXES: .html .adoc .1

# Requires asciidoc and xsltproc/docbook stylesheets.
.adoc.1:
	a2x --doctype manpage --format manpage $<
.adoc.html:
	a2x --doctype manpage --format xhtml -D . $<
	rm -f docbook-xsl.css

FAQ.html: FAQ.adoc
	asciidoc -a toc FAQ.adoc

clean:
	rm -f  *~ *.1 *.html *.tar.gz MANIFEST coverage-data
	rm -fr .rs* typescript test/typescript htmlconv

src-$(VERS).tar.gz: $(SOURCES) src.1
	@ls $(SOURCES) src.1 | sed s:^:src-$(VERS)/: >MANIFEST
	@(cd ..; ln -s src src-$(VERS))
	(cd ..; tar -czf src/src-$(VERS).tar.gz `cat src/MANIFEST`)
	@(cd ..; rm src-$(VERS))

pylint:
	@pylint --score=n src

shellcheck:
	@-shellcheck -s sh -f gcc srctest

version:
	@echo $(VERS)

fixme:
	@if command -v rg >/dev/null; then \
		rg --no-heading FIX''ME; \
	else \
		find . -type f -exec grep -n FIX''ME {} /dev/null \; | grep -v "[.]git"; \
	fi

dist: src-$(VERS).tar.gz

release: src-$(VERS).tar.gz src.html FAQ.html
	shipper version=$(VERS) | sh -e -x

refresh: src.html FAQ.html
	shipper -N -w version=$(VERS) | sh -e -x

install: all
	install -d "$(target)/bin"
	install -d "$(target)$(mandir)/man1"
	install src "$(target)/bin"
	install -m644 src.1 "$(target)$(mandir)/man1"

uninstall:
	rm "$(target)/bin/src" "$(target)$(mandir)/man1/src.1"
