# Variables
ROOT_DIR := $(PWD)
BUILD_TOOL := $(ROOT_DIR)/tools/build
DISTRO ?= almalinux/el9

# Authentication variables (optional)
# VAULT_ROLE_ID - Use AppRole authentication if set
# VAULT_ROLE - Kubernetes role for service account authentication (default: rpmbuilder)

# Automatically find all packages with metadata.yaml
PACKAGES := $(shell find $(ROOT_DIR)/rpms -mindepth 1 -maxdepth 1 -type d -exec test -f {}/metadata.yaml \; -print | xargs -n1 basename | sort)

# Default target to build all packages
.PHONY: all list build clean
all: build-all

# List all available packages
list:
	@echo "Available packages:"
	@for package in $(PACKAGES); do \
		echo "  $$package"; \
	done

# Build all packages using Python tool
build-all:
	@echo "Building all packages using Python tooling for distro $(DISTRO)..."
	$(BUILD_TOOL) build-all --distro $(DISTRO)

# Build all packages using native build (no Docker)
build-all-native:
	@echo "Building all packages natively (no Docker) for distro $(DISTRO)..."
	$(BUILD_TOOL) build-all --distro $(DISTRO) --native

# Build all packages using Buildah
build-all-buildah:
	@echo "Building all packages using Buildah for distro $(DISTRO)..."
	$(BUILD_TOOL) build-all --distro $(DISTRO) --buildah

# Build specific package using Python tool
.PHONY: $(PACKAGES)
$(PACKAGES):
	@echo "Building package: $@ for distro $(DISTRO)"
	$(BUILD_TOOL) build --distro $(DISTRO) $@

# Dry run - show what would be built without building
dry-run:
	@echo "Dry run - showing what would be built for distro $(DISTRO):"
	$(BUILD_TOOL) build-all --distro $(DISTRO) --dry-run

# Clean target
clean:
	@echo "Cleaning build artifacts..."
	rm -rf $(ROOT_DIR)/dist

# Update packages from GitHub releases
update:
	@echo "Checking for package updates from GitHub releases..."
	$(ROOT_DIR)/tools/update-gh --all

# Update specific package from GitHub
update-%:
	@echo "Checking for updates for package: $*"
	$(ROOT_DIR)/tools/update-gh --package $*
