# RCT Store Ops Demo - Project Root Makefile
# Commands for managing environment variables and project utilities

.PHONY: help env create-env-local check-env show-env clean-env

# Default target
help:
	@echo "🛠️  RCT Store Ops Demo - Available Commands"
	@echo ""
	@echo "🌍 Environment Management:"
	@echo "  create-env-local - Create .env.local from .env.example template"
	@echo "  check-env        - Check if .env.local exists and show key variables"
	@echo "  show-env         - Display current environment variables"
	@echo "  clean-env        - Remove .env.local file"
	@echo "  env              - Create .env.sh script (alternative method)"
	@echo ""
	@echo "🚀 Quick Start (Recommended):"
	@echo "  source load-env.sh           # Single command to load environment"
	@echo ""
	@echo "💡 Alternative:"
	@echo "  make env && . .env.sh        # Two-step approach"
	@echo ""
	@echo "📋 Setup:"
	@echo "  make create-env-local        # First time setup"

# Create .env.local from .env.example template
create-env-local:
	@echo "📝 Creating .env.local from .env.example template..."
	@if [ -f .env.local ]; then \
		echo "⚠️  .env.local already exists. Backing up to .env.local.bak"; \
		cp .env.local .env.local.bak; \
	fi
	@if [ -f .env.example ]; then \
		cp .env.example .env.local; \
		echo "✅ Created .env.local from .env.example"; \
		echo "💡 Edit .env.local with your configuration"; \
		echo "🚀 Then run: source load-env.sh"; \
	else \
		echo "❌ .env.example not found"; \
		echo "💡 Creating basic .env.local template..."; \
		echo "# Local Environment Configuration" > .env.local; \
		echo "# Databricks configuration" >> .env.local; \
		echo "DATABRICKS_HOST=https://your-workspace.cloud.databricks.com" >> .env.local; \
		echo "DATABRICKS_TOKEN=your-databricks-token" >> .env.local; \
		echo "DATABRICKS_WAREHOUSE_ID=your-warehouse-id" >> .env.local; \
		echo "" >> .env.local; \
		echo "# Package deployment configuration" >> .env.local; \
		echo "PACKAGE_NAME=retail-ai-package" >> .env.local; \
		echo "LOCAL_PACKAGE_PATH=./retail_ai" >> .env.local; \
		echo "REMOTE_PACKAGE_PATH=/Workspace/Users/your.email@company.com/rct_store_ops_demo/retail_ai" >> .env.local; \
		echo "" >> .env.local; \
		echo "# Environment settings" >> .env.local; \
		echo "ENVIRONMENT=local" >> .env.local; \
		echo "LOG_LEVEL=DEBUG" >> .env.local; \
		echo "" >> .env.local; \
		echo "# MLflow configuration" >> .env.local; \
		echo "MLFLOW_REGISTRY_URI=databricks-uc" >> .env.local; \
		echo "MLFLOW_EXPERIMENT_PATH=/Users/your.email@company.com/retail_ai_local" >> .env.local; \
		echo "" >> .env.local; \
		echo "# Model deployment settings" >> .env.local; \
		echo "MODEL_NAME=retail_ai_local_model" >> .env.local; \
		echo "ENDPOINT_NAME=retail_ai_local_endpoint" >> .env.local; \
		echo "✅ Created basic .env.local template"; \
		echo "💡 Edit .env.local with your configuration"; \
		echo "🚀 Then run: source load-env.sh"; \
	fi

# Check if .env.local exists and show key variables
check-env:
	@echo "🔍 Checking local environment configuration..."
	@if [ -f .env.local ]; then \
		echo "✅ .env.local exists"; \
		echo ""; \
		echo "📋 Key environment variables:"; \
		grep -E "^(DATABRICKS_HOST|DATABRICKS_TOKEN|PACKAGE_NAME|ENVIRONMENT|LOCAL_PACKAGE_PATH|REMOTE_PACKAGE_PATH)=" .env.local 2>/dev/null | sed -E 's/(TOKEN|PASSWORD|SECRET|KEY)=.*/\1=[REDACTED]/' || echo "  (No key variables found)"; \
		echo ""; \
		echo "🚀 To load: source load-env.sh"; \
	else \
		echo "❌ .env.local not found"; \
		echo "💡 Run 'make create-env-local' to create it"; \
	fi

# Show what would be loaded (with redacted sensitive values)
show-env:
	@if [ ! -f .env.local ]; then \
		echo "❌ .env.local not found" >&2; \
		exit 1; \
	fi
	@echo "Environment variables in .env.local:" >&2
	@cat .env.local | grep -v '^#' | grep -v '^$$' | sed -E 's/(TOKEN|PASSWORD|SECRET|KEY)=.*/\1=[REDACTED]/' >&2

# Create environment script (alternative method)
env:
	@if [ ! -f .env.local ]; then \
		echo "❌ .env.local not found. Run 'make create-env-local' first."; \
		exit 1; \
	fi
	@echo "#!/bin/bash" > .env.sh
	@echo "# Environment setup script - generated by make env" >> .env.sh
	@cat .env.local | grep -v '^#' | grep -v '^$$' | sed 's/^/export /' >> .env.sh
	@chmod +x .env.sh
	@echo "✅ Environment script created!"
	@echo ""
	@echo "🚀 Now run: . .env.sh"
	@echo ""
	@echo "💡 Recommended: Use 'source load-env.sh' instead"

# Remove .env.local file and temporary files
clean-env:
	@echo "🧹 Cleaning local environment files..."
	@if [ -f .env.local ]; then \
		rm .env.local; \
		echo "✅ .env.local removed"; \
	else \
		echo "ℹ️  .env.local not found (already clean)"; \
	fi
	@if [ -f .env.sh ]; then \
		rm .env.sh; \
		echo "✅ .env.sh removed"; \
	fi 