11#  -------------------------------------- #
2- #  Practicalli:  Makefile
2+ #  Practicalli Makefile
33# 
44#  Consistent set of targets to support local book development
55#  -------------------------------------- #
88#  .PHONY: ensures target used rather than matching file name
99#  https://makefiletutorial.com/#phony
1010.PHONY : all clean docs lint pre-commit-check test
11- #  -- Makefile Variables  ---------------- #
11+ #  ---------------------- ---------------- #
1212
1313#  -- Makefile Variables ---------------- #
1414#  run help if no target specified
1515.DEFAULT_GOAL  := help
16- SHELL  := /usr/bin/zsh
17- 
1816#  Column the target description is printed from
1917HELP-DESCRIPTION-SPACING  := 24
2018
21- #  Tool variables
22- MEGALINTER_RUNNER  := npx mega-linter-runner --flavor documentation --env "'MEGALINTER_CONFIG=.github/config/megalinter.yaml'" --remove-container
19+ SHELL  := /usr/bin/zsh
20+ 
21+ #  Tool Commands
22+ MEGALINTER_RUNNER  := npx mega-linter-runner --flavor documentation --env "'MEGALINTER_CONFIG=.github/config/megalinter.yaml'" --env "'VALIDATE_ALL_CODEBASE=true'"  --remove-container
2323MKDOCS_SERVER  := mkdocs serve --dev-addr localhost:7777
2424OUTDATED_FILE  := outdated-$(shell  date +% y-% m-% d-% T) .md
2525#  -------------------------------------- #
2626
27- #  -- Help ------------------------------ #
28- #  Source: https://nedbatchelder.com/blog/201804/makefile_help_target.html
29- 
30- help :  # # Describe available tasks in Makefile
31- 	@grep ' ^[a-zA-Z]'   $(MAKEFILE_LIST )  |  \ 
32- 	sort |  \ 
33- 	awk -F ' :.*?## '   ' NF==2 {printf "\033[36m  %-$(HELP-DESCRIPTION-SPACING)s\033[0m %s\n", $$1, $$2}' 
34- #  -------------------------------------- #
35- 
36- 
37- #  ------  Quality Checks  -------------- #
27+ #  --  Quality Checks  ------------------ #
3828pre-commit-check : lint
3929
4030lint :  # # Run MegaLinter with custom configuration (node.js required)
41- 	$(info  --------- MegaLinter Runner  ---------) 
31+ 	$(info  -- MegaLinter Runner  ------------ ---------) 
4232	$(MEGALINTER_RUNNER ) 
4333
44- lint-fix :  # # Run MegaLinter with custom configuration (node.js required)
45- 	$(info  ---------  MegaLinter Runner ---------) 
34+ lint-fix :  # # Run MegaLinter with applied fixes and  custom configuration (node.js required)
35+ 	$(info  -- MegaLinter Runner fix errors - ---------) 
4636	$(MEGALINTER_RUNNER )  --fix
4737
4838lint-clean :  # # Clean MegaLinter report information
49- 	$(info  ---------  MegaLinter Clean Reports ---------) 
39+ 	$(info  -- MegaLinter Clean Reports ----- ---------) 
5040	- rm -rf ./megalinter-reports
5141
5242megalinter-upgrade :  # # Upgrade MegaLinter config to latest version
53- 	$(info  ---------  MegaLinter Upgrade Config ---------) 
43+ 	$(info  -- MegaLinter Upgrade Config ---- ---------) 
5444	npx mega-linter-runner@latest --upgrade
5545
5646dependencies-outdated : # # Report new versions of library dependencies and GitHub action
@@ -62,29 +52,18 @@ dependencies-update: ## Update all library dependencies and GitHub action
6252	- clojure -T:update/dependency-versions >  $(OUTDATED_FILE ) 
6353#  -------------------------------------- #
6454
65- #  ------- Version Control -------------- #
66- git-sr :  # # status list of git repos under current directory
67- 	$(info  -- Multiple Git Repo Status --------------) 
68- 	mgitstatus -e --flatten
69- 
70- git-status :  # # status details of git repos under current directory
71- 	$(info  -- Multiple Git Status -------------------) 
72- 	mgitstatus
73- #  -------------------------------------- #
74- 
7555#  --- Documentation Generation  -------- #
76- 
7756python-venv :  # # Create Python Virtual Environment
7857	$(info  -- Create Python Virtual Environment -----) 
7958	python3 -m venv ~ /.local/venv
8059
81- python-venv- activate :  # # Active  Python Virtual Environment
60+ python-activate :  # # Activate  Python Virtual Environment for MkDocs 
8261	$(info  -- Mkdocs Local Server -------------------) 
8362	source  ~ /.local/venv/bin/activate
8463
8564mkdocs-install :
8665	$(info  -- Install Material for MkDocs -----------) 
87- 	source  ~ /.local/venv/bin/activate;  pip install mkdocs-material mkdocs-callouts mkdocs-glightbox mkdocs-git-revision-date-localized-plugin mkdocs-redirects mkdocs-rss-plugin pillow cairosvg --upgrade
66+ 	source  ~ /.local/venv/bin/activate  &&  pip install mkdocs-material mkdocs-callouts mkdocs-glightbox mkdocs-git-revision-date-localized-plugin mkdocs-redirects mkdocs-rss-plugin pillow cairosvg --upgrade
8867
8968docs : # # Build and run mkdocs in local server (python venv)
9069	$(info  -- MkDocs Local Server -------------------) 
@@ -95,7 +74,35 @@ docs-changed:  ## Build only changed files and run mkdocs in local server (pytho
9574	source  ~ /.local/venv/bin/activate &&  $(MKDOCS_SERVER )  --dirtyreload
9675
9776docs-build :  # # Build mkdocs (python venv)
98- 	$(info  -- Mkdocs Local Server - ------------------) 
77+ 	$(info  -- Mkdocs Build Website  ------------------) 
9978	source  ~ /.local/venv/bin/activate &&  mkdocs build
79+ 
80+ docs-debug :  # # Run mkdocs local server in debug mode (python venv)
81+ 	$(info  -- Mkdocs Local Server Debug -------------) 
82+ 	.  ~ /.local/venv/bin/activate;  $(MKDOCS_SERVER )  -v
83+ 
84+ docs-staging :  # # Deploy to staging repository
85+ 	$(info  -- Mkdocs Staging Deploy -----------------) 
86+ 	source  ~ /.local/venv/bin/activate &&  mkdocs gh-deploy --force --no-history --config-file mkdocs-staging.yml
87+ #  -------------------------------------- #
88+ 
89+ #  ------- Version Control -------------- #
90+ git-sr :  # # status list of git repos under current directory
91+ 	$(info  -- Multiple Git Repo Status --------------) 
92+ 	mgitstatus -e --flatten
93+ 
94+ git-status :  # # status details of git repos under current directory
95+ 	$(info  -- Multiple Git Status -------------------) 
96+ 	mgitstatus
97+ #  -------------------------------------- #
98+ 
99+ #  ------------ Help -------------------- #
100+ #  Source: https://nedbatchelder.com/blog/201804/makefile_help_target.html
101+ 
102+ help :  # # Describe available tasks in Makefile
103+ 	@grep ' ^[a-zA-Z]'   $(MAKEFILE_LIST )  |  \ 
104+ 	sort |  \ 
105+ 	awk -F ' :.*?## '   ' NF==2 {printf "\033[36m  %-$(HELP-DESCRIPTION-SPACING)s\033[0m %s\n", $$1, $$2}' 
100106#  -------------------------------------- #
101107
108+ dist : deps-build # # Build mkdocs website
0 commit comments