SHELL := /bin/bash

# Local settings use Makefile syntax, e.g. SRC_ROOT := /path/to/p4authcheck
-include .env

TARGET_ROOT ?= .

P4_PATHS := bin/...

README_HTML := README.html
README_STYLE := README.style.html

.PHONY: readme-html sync-installer sync-installer-dryrun check-src-root p4-edit p4-revert clean-empty-dirs

sync-installer: check-src-root
	@$(MAKE) p4-edit
	@echo "Syncing installer files from $(SRC_ROOT) -> $(TARGET_ROOT)"
	@rsync -au "$(SRC_ROOT)/bin/" "$(TARGET_ROOT)/bin/"
	@$(MAKE) p4-revert
	@echo "Sync complete."

sync-installer-dryrun: check-src-root
	@echo "Dry run: showing rsync actions only"
	@rsync -aun "$(SRC_ROOT)/bin/" "$(TARGET_ROOT)/bin/"

check-src-root:
	@test -n "$(strip $(SRC_ROOT))" || { echo "Set SRC_ROOT in .env or on the make command line." >&2; exit 1; }
	@test -d "$(SRC_ROOT)/bin" || { echo "Source bin directory not found: $(SRC_ROOT)/bin" >&2; exit 1; }

readme-html: $(README_HTML)

$(README_HTML): README.md $(README_STYLE)
	pandoc --standalone --metadata pagetitle="P4AuthCheck" --include-in-header=$(README_STYLE) README.md -o $@

p4-edit:
	@echo "Running: p4 edit $(P4_PATHS)"
	@cd "$(TARGET_ROOT)" && p4 edit $(P4_PATHS) || true

p4-revert:
	@echo "Running: p4 revert -a $(P4_PATHS)"
	@cd "$(TARGET_ROOT)" && p4 revert -a $(P4_PATHS) || true

clean-empty-dirs:
	@find "$(TARGET_ROOT)" -type d -empty -print
