# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

# Minimal makefile for Sphinx documentation
#

# You can set these variables from the command-line, and also
# from the environment for the first two.
SPHINXOPTS    ?=
SPHINXBUILD   ?= sphinx-build
SOURCEDIR     = .
BUILDDIR      = _build

# Put it first so that "make" without argument is like "make help".
help:
	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

.PHONY: help Makefile update-screenshots update-schemas update-openapi update-docs run-selenium

run-selenium:
	@rm -rf ../data-test ../test-images
	@cd .. && \
		. scripts/test-database.sh && \
		pytest -n 8 weblate/trans/tests/test_selenium.py

SCREENSHOTS = $(wildcard screenshots/*.webp)

../test-images/%.png: run-selenium
	@true

screenshots/%.webp: ../test-images/%.png run-selenium
	@echo "Processing $@"
	@convert $< $@

update-screenshots: $(SCREENSHOTS)
	@echo $(SCREENSHOTS)

update-schemas:
	@cp $$(uv run --no-sync ../scripts/get-schemas-dir.py)/schemas/* specs/schemas/

update-openapi:
	@uv run --no-sync ../manage.py spectacular --skip-checks --fail-on-warn --validate > specs/openapi.yaml

update-docs:
	@uv run --no-sync ../manage.py list_addons --sections events -o snippets/addon-events-autogenerated.rst
	@uv run --no-sync ../manage.py list_addons --sections addons -o snippets/addons-autogenerated.rst
	@uv run --no-sync ../manage.py list_addons --sections parameters -o snippets/addon-parameters-autogenerated.rst
	@uv run --no-sync ../manage.py list_machinery -o snippets/machines-autogenerated.rst
	@uv run --no-sync ../manage.py list_file_format_params > snippets/file-format-parameters.rst
	@uv run --no-sync ../manage.py list_permissions --sections perms > snippets/permissions.rst
	@uv run --no-sync ../manage.py list_permissions --sections roles > snippets/roles.rst
	@uv run --no-sync ../manage.py list_checks -s checks -o snippets/checks-autogenerated.rst
	@uv run --no-sync ../manage.py list_checks -s flags -o snippets/check-flags-autogenerated.rst
	@uv run --no-sync ../manage.py list_format_features -o snippets/format-features

# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
