Files
lords-of-ash/Makefile
T
jpmschweitzerandClaude Opus 4.6 c3512a8aa9 chore(meta): add ck3-tiger linting via Makefile
Adds static analysis for CK3 mod files using ck3-tiger. The Makefile
downloads the platform-specific binary and persists the CK3 game
directory path for validation runs.

Targets: make setup, make lint, make clean
Config: lords_of_ash/ck3-tiger.conf (English only, hide vanilla)
Commit skill updated with pre-commit lint step.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 17:18:36 +01:00

72 lines
2.7 KiB
Makefile

.PHONY: setup lint clean help
TIGER_VERSION := 1.15.0
TIGER_BIN := tools/ck3-tiger
ENV_FILE := .env
LOCAL_MOD := .lords-of-ash-local.mod
-include $(ENV_FILE)
# Detect platform for binary download
UNAME_S := $(shell uname -s)
UNAME_M := $(shell uname -m)
ifeq ($(UNAME_S),Linux)
TIGER_ARCHIVE := ck3-tiger-linux-v$(TIGER_VERSION).tar.gz
else ifeq ($(UNAME_S),Darwin)
TIGER_ARCHIVE :=
else ifneq (,$(findstring MINGW,$(UNAME_S)))
TIGER_ARCHIVE := ck3-tiger-windows-v$(TIGER_VERSION).zip
else ifneq (,$(findstring MSYS,$(UNAME_S)))
TIGER_ARCHIVE := ck3-tiger-windows-v$(TIGER_VERSION).zip
else
TIGER_ARCHIVE :=
endif
TIGER_URL := https://github.com/amtep/tiger/releases/download/v$(TIGER_VERSION)/$(TIGER_ARCHIVE)
help: ## Show available targets
@grep -E '^[a-zA-Z_-]+:.*##' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*##"}; {printf " %-12s %s\n", $$1, $$2}'
setup: ## Configure ck3-tiger (usage: make setup CK3_GAME_DIR=/path/to/ck3)
ifndef CK3_GAME_DIR
$(error CK3_GAME_DIR is required. Usage: make setup CK3_GAME_DIR=/path/to/ck3)
endif
@test -d "$(CK3_GAME_DIR)/game" || (echo "Error: $(CK3_GAME_DIR)/game not found. Is this the CK3 install directory?" && exit 1)
@echo 'CK3_GAME_DIR=$(CK3_GAME_DIR)' > $(ENV_FILE)
@sed 's|path="mod/lords_of_ash"|path="lords_of_ash"|' lords-of-ash.mod > $(LOCAL_MOD)
ifeq ($(TIGER_ARCHIVE),)
@echo "Warning: no pre-built ck3-tiger binary for $(UNAME_S)/$(UNAME_M)."
@echo "Install manually: cargo install ck3-tiger"
else
@if [ ! -x $(TIGER_BIN) ]; then \
echo "Downloading ck3-tiger v$(TIGER_VERSION) for $(UNAME_S)..."; \
mkdir -p tools; \
curl -fsSL "$(TIGER_URL)" -o "tools/$(TIGER_ARCHIVE)"; \
case "$(TIGER_ARCHIVE)" in \
*.tar.gz) tar -xzf "tools/$(TIGER_ARCHIVE)" -C tools;; \
*.zip) unzip -qo "tools/$(TIGER_ARCHIVE)" -d tools;; \
esac; \
mv tools/ck3-tiger-*/ck3-tiger $(TIGER_BIN); \
rm -rf tools/ck3-tiger-*/ "tools/$(TIGER_ARCHIVE)"; \
echo "Installed $(TIGER_BIN)"; \
else \
echo "ck3-tiger already installed."; \
fi
endif
@echo "Setup complete. Run 'make lint' to validate the mod."
lint: ## Run ck3-tiger against the mod
@test -f $(ENV_FILE) || (echo "Run 'make setup CK3_GAME_DIR=/path/to/ck3' first." && exit 1)
@test -f $(LOCAL_MOD) || (echo "Run 'make setup CK3_GAME_DIR=/path/to/ck3' first." && exit 1)
@if [ -x $(TIGER_BIN) ]; then \
$(TIGER_BIN) --game "$(CK3_GAME_DIR)" $(LOCAL_MOD); \
elif command -v ck3-tiger >/dev/null 2>&1; then \
ck3-tiger --game "$(CK3_GAME_DIR)" $(LOCAL_MOD); \
else \
echo "ck3-tiger not found. Run 'make setup' or install via 'cargo install ck3-tiger'."; \
exit 1; \
fi
clean: ## Remove generated local files and tools
rm -rf tools $(ENV_FILE) $(LOCAL_MOD)