.PHONY: help
help: ## Print this help
	@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n  make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf "  \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)


COLLECTION_NAME = your_namespace.your_collection
DOCS_DIR = docs
BUILD_DIR = $(DOCS_DIR)/build
SOURCE_DIR = $(DOCS_DIR)/source
VENV_DIR = .venv
SPHINX_BUILD = $(VENV_DIR)/bin/sphinx-build
ANTSIBULL_DOCS = $(VENV_DIR)/bin/antsibull-docs
PIP = $(VENV_DIR)/bin/pip

##@ Documentation
.PHONY: docs
docs: $(BUILD_DIR)  ## Build the documentation
	$(ANTSIBULL_DOCS) sphinx-init --dest-dir $(SOURCE_DIR)
	$(SPHINX_BUILD) -b html $(SOURCE_DIR) $(BUILD_DIR)
	@echo "Documentation generated in $(BUILD_DIR)/index.html"

# Target to set up a virtual environment and install dependencies
.PHONY: setup-venv
setup-venv: $(VENV_DIR)/bin/activate

$(VENV_DIR)/bin/activate: requirements.txt
	python3 -m venv $(VENV_DIR)
	$(PIP) install --upgrade pip
	$(PIP) install -r requirements.txt
	@echo "Virtual environment created in $(VENV_DIR)"

# Clean target
.PHONY: clean-docs
clean-docs:
	rm -rf $(BUILD_DIR) $(SOURCE_DIR)

.PHONY: clean-venv
clean-venv:
	rm -rf $(VENV_DIR)

# Build docs directory if it does not exist
$(BUILD_DIR):
	mkdir -p $(BUILD_DIR)

# Target to create or refresh virtualenv and build docs
.PHONY: all
all: setup-venv docs
