@@ -139,7 +139,7 @@ serve-ssl: certs
139139 SSL=true CERT_FILE=certs/cert.pem KEY_FILE=certs/key.pem ./run-gunicorn.sh
140140
141141dev :
142- uvicorn mcpgateway.main:app --reload --reload-exclude=' public/'
142+ @ $( VENV_DIR ) /bin/ uvicorn mcpgateway.main:app --reload --reload-exclude=' public/'
143143
144144run :
145145 ./run.sh
@@ -342,65 +342,65 @@ lint:
342342# # Individual targets (alphabetical)
343343# # --------------------------------------------------------------------------- ##
344344autoflake : # # 🧹 Strip unused imports / vars
345- autoflake --in-place --remove-all-unused-imports \
345+ @ $( VENV_DIR ) /bin/ autoflake --in-place --remove-all-unused-imports \
346346 --remove-unused-variables -r mcpgateway mcpgateway-wrapper tests
347347
348348black : # # 🎨 Reformat code with black
349- @echo " 🎨 black …" && black -l 200 mcpgateway mcpgateway-wrapper tests
349+ @echo " 🎨 black …" && $( VENV_DIR ) /bin/ black -l 200 mcpgateway mcpgateway-wrapper tests
350350
351351isort : # # 🔀 Sort imports
352- @echo " 🔀 isort …" && isort .
352+ @echo " 🔀 isort …" && $( VENV_DIR ) /bin/ isort .
353353
354354flake8 : # # 🐍 flake8 checks
355- flake8 mcpgateway
355+ @ $( VENV_DIR ) /bin/ flake8 mcpgateway
356356
357357pylint : # # 🐛 pylint checks
358- pylint mcpgateway
358+ @ $( VENV_DIR ) /bin/ pylint mcpgateway
359359
360360markdownlint : # # 📖 Markdown linting
361- markdownlint -c .markdownlint.json .
361+ @ $( VENV_DIR ) /bin/ markdownlint -c .markdownlint.json .
362362
363363mypy : # # 🏷️ mypy type-checking
364- mypy mcpgateway
364+ @ $( VENV_DIR ) /bin/ mypy mcpgateway
365365
366366bandit : # # 🛡️ bandit security scan
367- bandit -r mcpgateway
367+ @ $( VENV_DIR ) /bin/ bandit -r mcpgateway
368368
369369pydocstyle : # # 📚 Docstring style
370- pydocstyle mcpgateway
370+ @ $( VENV_DIR ) /bin/ pydocstyle mcpgateway
371371
372372pycodestyle : # # 📝 Simple PEP-8 checker
373- pycodestyle mcpgateway --max-line-length=200
373+ @ $( VENV_DIR ) /bin/ pycodestyle mcpgateway --max-line-length=200
374374
375375pre-commit : # # 🪄 Run pre-commit hooks
376- pre-commit run --all-files --show-diff-on-failure
376+ @ $( VENV_DIR ) /bin/ pre-commit run --all-files --show-diff-on-failure
377377
378378ruff : # # ⚡ Ruff lint + format
379- ruff check mcpgateway && ruff format mcpgateway mcpgateway-wrapper tests
379+ @ $( VENV_DIR ) /bin/ ruff check mcpgateway && $( VENV_DIR ) /bin/ ruff format mcpgateway mcpgateway-wrapper tests
380380
381381ty : # # ⚡ Ty type checker
382- ty check mcpgateway mcpgateway-wrapper tests
382+ @ $( VENV_DIR ) /bin/ ty check mcpgateway mcpgateway-wrapper tests
383383
384384pyright : # # 🏷️ Pyright type-checking
385- pyright mcpgateway mcpgateway-wrapper tests
385+ @ $( VENV_DIR ) /bin/ pyright mcpgateway mcpgateway-wrapper tests
386386
387387radon : # # 📈 Complexity / MI metrics
388- radon mi -s mcpgateway mcpgateway-wrapper tests && \
389- radon cc -s mcpgateway mcpgateway-wrapper tests && \
390- radon hal mcpgateway mcpgateway-wrapper tests && \
391- radon raw -s mcpgateway mcpgateway-wrapper tests
388+ @ $( VENV_DIR ) /bin/ radon mi -s mcpgateway mcpgateway-wrapper tests && \
389+ $( VENV_DIR ) /bin/ radon cc -s mcpgateway mcpgateway-wrapper tests && \
390+ $( VENV_DIR ) /bin/ radon hal mcpgateway mcpgateway-wrapper tests && \
391+ $( VENV_DIR ) /bin/ radon raw -s mcpgateway mcpgateway-wrapper tests
392392
393393pyroma : # # 📦 Packaging metadata check
394- pyroma -d .
394+ @ $( VENV_DIR ) /bin/ pyroma -d .
395395
396396importchecker : # # 🧐 Orphaned import detector
397- importchecker .
397+ @ $( VENV_DIR ) /bin/ importchecker .
398398
399399spellcheck : # # 🔤 Spell-check
400- pyspelling || true
400+ @ $( VENV_DIR ) /bin/ pyspelling || true
401401
402402fawltydeps : # # 🏗️ Dependency sanity
403- fawltydeps --detailed --exclude ' docs/**' . || true
403+ @ $( VENV_DIR ) /bin/ fawltydeps --detailed --exclude ' docs/**' . || true
404404
405405wily : # # 📈 Maintainability report
406406 @git stash --quiet
@@ -409,7 +409,7 @@ wily: ## 📈 Maintainability report
409409 @git stash pop --quiet
410410
411411pyre : # # 🧠 Facebook Pyre analysis
412- pyre
412+ @ $( VENV_DIR ) /bin/ pyre
413413
414414depend : # # 📦 List dependencies
415415 pdm list --freeze
@@ -445,11 +445,11 @@ sbom: ## 🛡️ Generate SBOM & security report
445445
446446pytype : # # 🧠 Pytype static type analysis
447447 @echo " 🧠 Pytype analysis…"
448- pytype -V 3.12 -j auto mcpgateway mcpgateway-wrapper tests
448+ @ $( VENV_DIR ) /bin/ pytype -V 3.12 -j auto mcpgateway mcpgateway-wrapper tests
449449
450450check-manifest : # # 📦 Verify MANIFEST.in completeness
451451 @echo " 📦 Verifying MANIFEST.in completeness…"
452- check-manifest
452+ @ $( VENV_DIR ) /bin/ check-manifest
453453
454454# -----------------------------------------------------------------------------
455455# 📑 YAML / JSON / TOML LINTERS
@@ -467,7 +467,7 @@ LINTERS += yamllint jsonlint tomllint
467467yamllint : # # 📑 YAML linting
468468 @command -v yamllint > /dev/null 2>&1 || { \
469469 echo ' ❌ yamllint not installed ➜ pip install yamllint' ; exit 1; }
470- @echo ' 📑 yamllint …' && yamllint -c .yamllint .
470+ @echo ' 📑 yamllint …' && $( VENV_DIR ) /bin/ yamllint -c .yamllint .
471471
472472jsonlint : # # 📑 JSON validation (jq)
473473 @command -v jq > /dev/null 2>&1 || { \
@@ -482,7 +482,7 @@ tomllint: ## 📑 TOML validation (tomlcheck)
482482 echo ' ❌ tomlcheck not installed ➜ pip install tomlcheck' ; exit 1; }
483483 @echo ' 📑 tomllint (tomlcheck) …'
484484 @find . -type f -name ' *.toml' -print0 \
485- | xargs -0 -I{} tomlcheck " {}"
485+ | xargs -0 -I{} $( VENV_DIR ) /bin/ tomlcheck " {}"
486486
487487# =============================================================================
488488# 🕸️ WEBPAGE LINTERS & STATIC ANALYSIS
0 commit comments