SPHINXBUILD ?= sphinx-build
BUILDDIR ?= _build
DOCS_REMOTE ?= git@codeberg.org:araichev/make_gtfs_docs

SPHINXOPTS ?=
SOURCEDIR := .
HTMLDIR := $(BUILDDIR)/html
SINGLEHTMLDIR := $(BUILDDIR)/singlehtml

.PHONY: help clean html singlehtml publish-docs linkcheck doctest

help:
	@echo "Targets:"
	@echo "  html          Build HTML docs"
	@echo "  singlehtml    Build single-page HTML docs"
	@echo "  publish-docs  Publish single-page docs to Codeberg Pages"
	@echo "  linkcheck     Check external links"
	@echo "  doctest       Run documentation doctests"
	@echo "  clean         Remove built docs"

clean:
	rm -rf "$(BUILDDIR)"

html:
	$(SPHINXBUILD) -b html $(SPHINXOPTS) "$(SOURCEDIR)" "$(HTMLDIR)"

singlehtml:
	$(SPHINXBUILD) -b singlehtml $(SPHINXOPTS) "$(SOURCEDIR)" "$(SINGLEHTMLDIR)"
	@out="$(SINGLEHTMLDIR)/index.html"; \
	if command -v gsed >/dev/null 2>&1; then SED=gsed; else SED=sed; fi; \
	$$SED -i.bak -E 's/#document-[^"#]+#/#/g' "$$out" && rm -f "$$out.bak"

publish-docs: singlehtml
	@echo "Publishing from '$(SINGLEHTMLDIR)' to '$(DOCS_REMOTE)' ..."
	ghp-import --no-jekyll --branch=docs-build "$(SINGLEHTMLDIR)"
	git push "$(DOCS_REMOTE)" docs-build:pages --force
	-@git branch -D docs-build >/dev/null 2>&1 || true
	@echo "Docs published."

linkcheck:
	$(SPHINXBUILD) -b linkcheck $(SPHINXOPTS) "$(SOURCEDIR)" "$(BUILDDIR)/linkcheck"

doctest:
	$(SPHINXBUILD) -b doctest $(SPHINXOPTS) "$(SOURCEDIR)" "$(BUILDDIR)/doctest"
