| 
									
										
										
										
											2024-09-10 20:34:37 +02:00
										 |  |  | # Define the targets
 | 
					
						
							| 
									
										
										
										
											2025-04-07 22:23:35 +02:00
										 |  |  | .PHONY: help venv pip install dist test test-full docker-run docker-build docs read-docs clean format gitlint mypy run run-dev | 
					
						
							| 
									
										
										
										
											2024-09-10 20:34:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Default target
 | 
					
						
							|  |  |  | all: help | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Target to display help information
 | 
					
						
							|  |  |  | help: | 
					
						
							|  |  |  | 	@echo "Available targets:" | 
					
						
							| 
									
										
										
										
											2024-10-07 20:56:10 +02:00
										 |  |  | 	@echo "  venv         - Set up a Python 3 virtual environment." | 
					
						
							|  |  |  | 	@echo "  pip          - Install dependencies from requirements.txt." | 
					
						
							|  |  |  | 	@echo "  pip-dev      - Install dependencies from requirements-dev.txt." | 
					
						
							| 
									
										
										
										
											2024-11-15 22:27:25 +01:00
										 |  |  | 	@echo "  format       - Format source code." | 
					
						
							| 
									
										
										
										
											2025-04-07 22:23:35 +02:00
										 |  |  | 	@echo "  gitlint      - Lint last commit message." | 
					
						
							| 
									
										
										
										
											2024-11-26 22:28:05 +01:00
										 |  |  | 	@echo "  mypy         - Run mypy." | 
					
						
							| 
									
										
										
										
											2024-10-07 20:56:10 +02:00
										 |  |  | 	@echo "  install      - Install EOS in editable form (development mode) into virtual environment." | 
					
						
							|  |  |  | 	@echo "  docker-run   - Run entire setup on docker" | 
					
						
							|  |  |  | 	@echo "  docker-build - Rebuild docker image" | 
					
						
							|  |  |  | 	@echo "  docs         - Generate HTML documentation (in build/docs/html/)." | 
					
						
							| 
									
										
										
										
											2024-11-10 23:27:52 +01:00
										 |  |  | 	@echo "  read-docs    - Read HTML documentation in your browser." | 
					
						
							| 
									
										
										
										
											2025-02-01 16:41:24 +01:00
										 |  |  | 	@echo "  gen-docs     - Generate openapi.json and docs/_generated/*." | 
					
						
							|  |  |  | 	@echo "  clean-docs   - Remove generated documentation." | 
					
						
							| 
									
										
										
										
											2025-01-22 23:47:28 +01:00
										 |  |  | 	@echo "  run          - Run EOS production server in virtual environment." | 
					
						
							|  |  |  | 	@echo "  run-dev      - Run EOS development server in virtual environment (automatically reloads)." | 
					
						
							|  |  |  | 	@echo "  run-dash     - Run EOSdash production server in virtual environment." | 
					
						
							|  |  |  | 	@echo "  run-dash-dev - Run EOSdash development server in virtual environment (automatically reloads)." | 
					
						
							| 
									
										
										
										
											2025-04-05 13:08:12 +02:00
										 |  |  | 	@echo "  test         - Run tests." | 
					
						
							|  |  |  | 	@echo "  test-full    - Run tests with full optimization." | 
					
						
							|  |  |  | 	@echo "  test-ci      - Run tests as CI does. No user config file allowed." | 
					
						
							| 
									
										
										
										
											2024-10-07 20:56:10 +02:00
										 |  |  | 	@echo "  dist         - Create distribution (in dist/)." | 
					
						
							|  |  |  | 	@echo "  clean        - Remove generated documentation, distribution and virtual environment." | 
					
						
							| 
									
										
										
										
											2024-09-10 20:34:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Target to set up a Python 3 virtual environment
 | 
					
						
							|  |  |  | venv: | 
					
						
							|  |  |  | 	python3 -m venv .venv | 
					
						
							|  |  |  | 	@echo "Virtual environment created in '.venv'. Activate it using 'source .venv/bin/activate'." | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Target to install dependencies from requirements.txt
 | 
					
						
							|  |  |  | pip: venv | 
					
						
							| 
									
										
										
										
											2024-10-06 13:47:16 +02:00
										 |  |  | 	.venv/bin/pip install --upgrade pip | 
					
						
							| 
									
										
										
										
											2024-09-10 20:34:37 +02:00
										 |  |  | 	.venv/bin/pip install -r requirements.txt | 
					
						
							|  |  |  | 	@echo "Dependencies installed from requirements.txt." | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-08 14:29:45 +02:00
										 |  |  | # Target to install dependencies from requirements.txt
 | 
					
						
							|  |  |  | pip-dev: pip | 
					
						
							|  |  |  | 	.venv/bin/pip install -r requirements-dev.txt | 
					
						
							|  |  |  | 	@echo "Dependencies installed from requirements-dev.txt." | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-06 13:47:16 +02:00
										 |  |  | # Target to install EOS in editable form (development mode) into virtual environment.
 | 
					
						
							|  |  |  | install: pip | 
					
						
							|  |  |  | 	.venv/bin/pip install build | 
					
						
							|  |  |  | 	.venv/bin/pip install -e . | 
					
						
							|  |  |  | 	@echo "EOS installed in editable form (development mode)." | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Target to create a distribution.
 | 
					
						
							|  |  |  | dist: pip | 
					
						
							|  |  |  | 	.venv/bin/pip install build | 
					
						
							|  |  |  | 	.venv/bin/python -m build --wheel | 
					
						
							|  |  |  | 	@echo "Distribution created (see dist/)." | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-01-06 16:27:57 +01:00
										 |  |  | # Target to generate documentation
 | 
					
						
							|  |  |  | gen-docs: pip-dev | 
					
						
							| 
									
										
										
										
											2025-01-06 19:34:15 +01:00
										 |  |  | 	.venv/bin/pip install -e . | 
					
						
							| 
									
										
										
										
											2025-01-06 16:27:57 +01:00
										 |  |  | 	.venv/bin/python ./scripts/generate_config_md.py --output-file docs/_generated/config.md | 
					
						
							|  |  |  | 	.venv/bin/python ./scripts/generate_openapi_md.py --output-file docs/_generated/openapi.md | 
					
						
							|  |  |  | 	.venv/bin/python ./scripts/generate_openapi.py --output-file openapi.json | 
					
						
							|  |  |  | 	@echo "Documentation generated to openapi.json and docs/_generated." | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Target to build HTML documentation
 | 
					
						
							| 
									
										
										
										
											2024-10-10 08:33:21 +02:00
										 |  |  | docs: pip-dev | 
					
						
							|  |  |  | 	.venv/bin/sphinx-build -M html docs build/docs | 
					
						
							| 
									
										
										
										
											2025-01-06 16:27:57 +01:00
										 |  |  | 	@echo "Documentation build to build/docs/html/." | 
					
						
							| 
									
										
										
										
											2024-09-10 20:34:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-10 23:27:52 +01:00
										 |  |  | # Target to read the HTML documentation
 | 
					
						
							|  |  |  | read-docs: docs | 
					
						
							|  |  |  | 	@echo "Read the documentation in your browser" | 
					
						
							|  |  |  | 	.venv/bin/python -m webbrowser build/docs/html/index.html | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-10 22:00:28 +02:00
										 |  |  | # Clean Python bytecode
 | 
					
						
							|  |  |  | clean-bytecode: | 
					
						
							|  |  |  | 	find . -type d -name "__pycache__" -exec rm -r {} + | 
					
						
							|  |  |  | 	find . -type f -name "*.pyc" -delete | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-01-03 00:31:20 +01:00
										 |  |  | # Clean target to remove generated documentation and documentation artefacts
 | 
					
						
							|  |  |  | clean-docs: | 
					
						
							| 
									
										
										
										
											2024-11-10 23:27:52 +01:00
										 |  |  | 	@echo "Searching and deleting all '_autosum' directories in docs..." | 
					
						
							|  |  |  | 	@find docs -type d -name '_autosummary' -exec rm -rf {} +; | 
					
						
							| 
									
										
										
										
											2025-01-03 00:31:20 +01:00
										 |  |  | 	@echo "Cleaning docs build directories" | 
					
						
							|  |  |  | 	rm -rf build/docs | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Clean target to remove generated documentation, distribution and virtual environment
 | 
					
						
							|  |  |  | clean: clean-docs | 
					
						
							|  |  |  | 	@echo "Cleaning virtual env, distribution and build directories" | 
					
						
							|  |  |  | 	rm -rf build .venv | 
					
						
							| 
									
										
										
										
											2024-11-10 23:27:52 +01:00
										 |  |  | 	@echo "Deletion complete." | 
					
						
							| 
									
										
										
										
											2024-09-10 20:34:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | run: | 
					
						
							| 
									
										
										
										
											2025-01-21 19:20:50 +01:00
										 |  |  | 	@echo "Starting EOS production server, please wait..." | 
					
						
							| 
									
										
										
										
											2025-01-22 23:47:28 +01:00
										 |  |  | 	.venv/bin/python -m akkudoktoreos.server.eos | 
					
						
							| 
									
										
										
										
											2024-11-15 22:27:25 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | run-dev: | 
					
						
							| 
									
										
										
										
											2025-01-09 16:54:49 +01:00
										 |  |  | 	@echo "Starting EOS development server, please wait..." | 
					
						
							| 
									
										
										
										
											2025-01-22 23:47:28 +01:00
										 |  |  | 	.venv/bin/python -m akkudoktoreos.server.eos --host localhost --port 8503 --reload true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | run-dash: | 
					
						
							|  |  |  | 	@echo "Starting EOSdash production server, please wait..." | 
					
						
							|  |  |  | 	.venv/bin/python -m akkudoktoreos.server.eosdash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | run-dash-dev: | 
					
						
							|  |  |  | 	@echo "Starting EOSdash development server, please wait..." | 
					
						
							|  |  |  | 	.venv/bin/python -m akkudoktoreos.server.eosdash --host localhost --port 8504 --reload true | 
					
						
							| 
									
										
										
										
											2024-09-16 11:48:20 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-08 14:29:45 +02:00
										 |  |  | # Target to setup tests.
 | 
					
						
							|  |  |  | test-setup: pip-dev | 
					
						
							|  |  |  | 	@echo "Setup tests" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-06 12:33:18 +02:00
										 |  |  | # Target to run tests.
 | 
					
						
							|  |  |  | test: | 
					
						
							|  |  |  | 	@echo "Running tests..." | 
					
						
							| 
									
										
										
										
											2024-11-10 23:00:16 +01:00
										 |  |  | 	.venv/bin/pytest -vs --cov src --cov-report term-missing | 
					
						
							| 
									
										
										
										
											2024-10-06 12:33:18 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-05 13:08:12 +02:00
										 |  |  | # Target to run tests as done by CI on Github.
 | 
					
						
							|  |  |  | test-ci: | 
					
						
							|  |  |  | 	@echo "Running tests as CI..." | 
					
						
							|  |  |  | 	.venv/bin/pytest --full-run --check-config-side-effect -vs --cov src --cov-report term-missing | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-10 23:22:30 +01:00
										 |  |  | # Target to run all tests.
 | 
					
						
							|  |  |  | test-full: | 
					
						
							|  |  |  | 	@echo "Running all tests..." | 
					
						
							|  |  |  | 	.venv/bin/pytest --full-run | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-15 22:27:25 +01:00
										 |  |  | # Target to format code.
 | 
					
						
							|  |  |  | format: | 
					
						
							| 
									
										
										
										
											2024-11-17 15:27:43 +01:00
										 |  |  | 	.venv/bin/pre-commit run --all-files | 
					
						
							| 
									
										
										
										
											2024-11-15 22:27:25 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-07 22:23:35 +02:00
										 |  |  | # Target to trigger gitlint using pre-commit for the last commit message
 | 
					
						
							|  |  |  | gitlint: | 
					
						
							|  |  |  | 	.venv/bin/pre-commit run gitlint --hook-stage commit-msg --commit-msg-filename .git/COMMIT_EDITMSG | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-26 22:28:05 +01:00
										 |  |  | # Target to format code.
 | 
					
						
							|  |  |  | mypy: | 
					
						
							|  |  |  | 	.venv/bin/mypy | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-16 11:48:20 +02:00
										 |  |  | # Run entire setup on docker
 | 
					
						
							|  |  |  | docker-run: | 
					
						
							| 
									
										
										
										
											2024-10-07 20:56:10 +02:00
										 |  |  | 	@docker compose up --remove-orphans | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | docker-build: | 
					
						
							| 
									
										
										
										
											2024-11-15 22:27:25 +01:00
										 |  |  | 	@docker compose build --pull |