# Copyright (C) all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
all::

RSYNC = rsync
RSYNC_DEST = public-inbox.org:/srv/public-inbox/
AWK = awk
MAN = man

# part of `man-db' on Debian, not sure about other distros
LEXGROG = lexgrog

# this is "xml" on FreeBSD and maybe some other distros:
XMLSTARLET = xmlstarlet

# libgraph-easy-perl from Debian, Graph::Easy from CPAN
GRAPH_EASY = graph-easy

INSTALL = install
PODMAN = pod2man
PODMAN_OPTS = -v --stderr -d 1993-10-02 -c 'public-inbox user manual'
PODMAN_OPTS += -r public-inbox.git
podman = $(PODMAN) $(PODMAN_OPTS)

man2text = COLUMNS=80 MANWIDTH=80 TERM=dumb MANOPT='--nj --nh' man

all:: man

manpages = $(man1) $(man5) $(man7) $(man8)

man: $(manpages)

prefix ?= $(PREFIX)
prefix ?= $(HOME)
mandir ?= $(INSTALLMAN1DIR)/..
man5dir = $(mandir)/man5
man7dir = $(mandir)/man7
man8dir = $(mandir)/man8

install-man: man
	$(INSTALL) -d -m 755 $(DESTDIR)$(INSTALLMAN1DIR)
	$(INSTALL) -d -m 755 $(DESTDIR)$(man5dir)
	$(INSTALL) -d -m 755 $(DESTDIR)$(man7dir)
	$(INSTALL) -d -m 755 $(DESTDIR)$(man8dir)
	$(INSTALL) -m 644 $(man1) $(DESTDIR)$(INSTALLMAN1DIR)
	$(INSTALL) -m 644 $(man5) $(DESTDIR)$(man5dir)
	$(INSTALL) -m 644 $(man7) $(DESTDIR)$(man7dir)
	$(INSTALL) -m 644 $(man8) $(DESTDIR)$(man8dir)

doc_install :: install-man

check : check-man
check_man = $(AWK) \
	'{gsub(/\b./,"")}$$0 !~ /\.onion/&&length>80{print;e=1}END{exit(e)}' \
	>&2

check-man : $(check_80)

check-lexgrog : $(check_lexgrog)

all :: $(docs)

txt2pre = $(PERL) -I lib ./Documentation/txt2pre >$@

Documentation/standards.txt : Documentation/standards.perl
	$(PERL) -w Documentation/standards.perl >$@+
	touch -r Documentation/standards.perl $@+
	mv $@+ $@

# flow.txt is checked into git since Graph::Easy isn't in many distros
Documentation/flow.txt : Documentation/flow.ge

%.txt : %.ge
	(sed -ne '1,/^$$/p' <$<; \
		$(GRAPH_EASY) $< || grep -v '^#' $@; \
		echo; \
		sed -ne '/^# Copyright/,$$p' <$< \
		) >$@+
	echo >>$@+ \
	  '# This file was generated from $(@F) using Graph::Easy'
	touch -r $< $@+
	mv $@+ $@

Documentation/lei-q.pod : lib/PublicInbox/Search.pm Documentation/common.perl
	$(PERL) -I lib -w Documentation/common.perl $@

NEWS NEWS.atom NEWS.html : $(news_deps)
	$(PERL) -I lib -w Documentation/mknews.perl $@ $(RELEASES)

# check for internal API changes:
check : NEWS .NEWS.atom.check NEWS.html

.NEWS.atom.check: NEWS.atom
	$(XMLSTARLET) val NEWS.atom || \
		{ e=$$?; test $$e -eq 0 || test $$e -eq 127; }
	>$@

html: $(docs_html)

doc: $(docs)

%.gz: %
	gzip -9 --rsyncable <$< >$@+
	touch -r $< $@+
	mv $@+ $@

gz-doc: $(gz_docs)

rsync-doc: NEWS.atom.gz
	# /usr/share/doc/rsync/scripts/git-set-file-times{.gz} on Debian systems
	# It is also at: https://yhbt.net/git-set-file-times
	-git set-file-times $(docs) $(txt)
	$(MAKE) gz-doc
	$(RSYNC) --chmod=Fugo=r -av $(rsync_docs) $(RSYNC_DEST)

clean-doc:
	$(RM_F) $(man1) $(man5) $(man7) $(man8) $(gz_docs) $(docs_html) \
		$(mantxt) \
		NEWS NEWS.atom NEWS.html Documentation/standards.txt \
		Documentation/flow.html Documentation/flow.html.gz \
		Documentation/flow.txt.gz

clean :: clean-doc

# No camel-cased tarballs or pathnames which MakeMaker creates,
# this may not always be a Perl project.  This should match what
# cgit generate, since git maintainers ensure git-archive has
# stable tar output
DIST_TREE = HEAD^{tree}
DIST_VER =
git-dist :
	ver=$$(git describe $(DIST_VER) | sed -ne s/v//p); \
	pkgpfx=public-inbox-$$ver; \
	git archive --prefix=$$pkgpfx/ --format=tar $(DIST_TREE) \
		| gzip -n >$$pkgpfx.tar.gz; \
	echo $$pkgpfx.tar.gz created
