@@ -451,6 +451,39 @@ check-manifest: ## 📦 Verify MANIFEST.in completeness
451
451
@echo " 📦 Verifying MANIFEST.in completeness…"
452
452
check-manifest
453
453
454
+ # -----------------------------------------------------------------------------
455
+ # 📑 YAML / JSON / TOML LINTERS
456
+ # -----------------------------------------------------------------------------
457
+ # help: yamllint - Lint YAML files (uses .yamllint)
458
+ # help: jsonlint - Validate every *.json file with jq (‐‐exit-status)
459
+ # help: tomllint - Validate *.toml files with tomlcheck
460
+ #
461
+ # ➊ Add the new linters to the master list
462
+ LINTERS += yamllint jsonlint tomllint
463
+
464
+ # ➋ Individual targets
465
+ .PHONY : yamllint jsonlint tomllint
466
+
467
+ yamllint : # # 📑 YAML linting
468
+ @command -v yamllint > /dev/null 2>&1 || { \
469
+ echo ' ❌ yamllint not installed ➜ pip install yamllint' ; exit 1; }
470
+ @echo ' 📑 yamllint …' && yamllint -c .yamllint .
471
+
472
+ jsonlint : # # 📑 JSON validation (jq)
473
+ @command -v jq > /dev/null 2>&1 || { \
474
+ echo ' ❌ jq not installed ➜ sudo apt-get install jq' ; exit 1; }
475
+ @echo ' 📑 jsonlint (jq) …'
476
+ @find . -type f -name ' *.json' -not -path ' ./node_modules/*' -print0 \
477
+ | xargs -0 -I{} sh -c ' jq empty "{}"' \
478
+ && echo ' ✅ All JSON valid'
479
+
480
+ tomllint : # # 📑 TOML validation (tomlcheck)
481
+ @command -v tomlcheck > /dev/null 2>&1 || { \
482
+ echo ' ❌ tomlcheck not installed ➜ pip install tomlcheck' ; exit 1; }
483
+ @echo ' 📑 tomllint (tomlcheck) …'
484
+ @find . -type f -name ' *.toml' -print0 \
485
+ | xargs -0 -I{} tomlcheck " {}"
486
+
454
487
# =============================================================================
455
488
# 🕸️ WEBPAGE LINTERS & STATIC ANALYSIS
456
489
# =============================================================================
0 commit comments