SHELL := /bin/bash
.DEFAULT_GOAL := help

.PHONY: help doctor validate validate-structure validate-project check tree

help: ## 사용 가능한 명령을 표시합니다.
	@awk 'BEGIN {FS = ":.*## "; print "Usage: make <target>"} /^[a-zA-Z_-]+:.*## / {printf "  %-20s %s\n", $$1, $$2}' $(MAKEFILE_LIST)

doctor: ## 현재 로컬 도구 상태를 확인합니다.
	@./scripts/doctor.sh

validate-structure: ## 템플릿 구조, 민감 파일, Kustomize, Helm과 IaC 형식을 검증합니다.
	@./scripts/validate.sh

validate-project: ## 프로젝트 entrypoint, schema, policy, shell과 문서를 검증합니다.
	@bash ./scripts/ci/validate.sh

validate: validate-structure validate-project ## 구조 및 프로젝트 검증을 모두 실행합니다.

check: validate ## CI와 동일한 전체 검증을 실행합니다.

tree: ## 생성물과 Git 메타데이터를 제외한 구조를 표시합니다.
	@find . \
		\( \
			-name .build -o \
			-name .cache -o \
			-name .git -o \
			-name .terraform -o \
			-name .terragrunt-cache -o \
			-name dist -o \
			-name rendered -o \
			-name tmp \
		\) -prune -o \
		-print | sort
