.PHONY: help build local-login local-preview local-up staging-login staging-preview staging-up prod-login prod-preview prod-up
# Default target
help: ## Show this help message
@echo "Available targets:"
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " %-20s %s\n", $$1, $$2}'
# Build the Go binary
build: ## Build the Pulumi Go program
go build
# Local stack commands
local-login: ## Login to local Pulumi backend
pulumi login --local
PULUMI_CONFIG_PASSPHRASE="" pulumi stack select local --create
local-preview: build local-login ## Preview local infrastructure changes
PULUMI_CONFIG_PASSPHRASE="" pulumi preview --stack local
local-up: build local-login ## Deploy local infrastructure
PULUMI_CONFIG_PASSPHRASE="" pulumi up --yes --stack local
local-destroy: local-login ## Destroy local infrastructure
pulumi stack rm local --force --yes --preserve-config
echo "Make sure to also delete your k8s cluster, e.g. minikube delete"
# Staging stack commands
staging-login: ## Login to staging Pulumi backend
pulumi login gs://mcp-registry-staging-pulumi-state
staging-preview: build staging-login ## Preview staging infrastructure changes
PULUMI_CONFIG_PASSPHRASE_FILE=passphrase.staging.txt pulumi preview --stack gcpStaging
staging-up: build staging-login ## Deploy staging infrastructure
PULUMI_CONFIG_PASSPHRASE_FILE=passphrase.staging.txt pulumi up --yes --stack gcpStaging
# Production stack commands
prod-login: ## Login to production Pulumi backend
pulumi login gs://mcp-registry-prod-pulumi-state
prod-preview: build prod-login ## Preview production infrastructure changes
PULUMI_CONFIG_PASSPHRASE_FILE=passphrase.prod.txt pulumi preview --stack gcpProd
prod-up: build prod-login ## Deploy production infrastructure
PULUMI_CONFIG_PASSPHRASE_FILE=passphrase.prod.txt pulumi up --yes --stack gcpProd