mirror of
				https://github.com/Akkudoktor-EOS/EOS.git
				synced 2025-11-04 00:36:21 +00:00 
			
		
		
		
	* Mypy: Initial support * Add to pre-commit (currently installs own deps, could maybe changed to poetry venv in the future to reuse environment and don't need duplicated types deps). * Add type hints. * Mypy: Add missing annotations
		
			
				
	
	
		
			114 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
# Define the targets
 | 
						|
.PHONY: help venv pip install dist test test-full docker-run docker-build docs read-docs clean format mypy run run-dev
 | 
						|
 | 
						|
# Default target
 | 
						|
all: help
 | 
						|
 | 
						|
# Target to display help information
 | 
						|
help:
 | 
						|
	@echo "Available targets:"
 | 
						|
	@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."
 | 
						|
	@echo "  format       - Format source code."
 | 
						|
	@echo "  mypy         - Run mypy."
 | 
						|
	@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/)."
 | 
						|
	@echo "  read-docs    - Read HTML documentation in your browser."
 | 
						|
	@echo "  run          - Run FastAPI production server in the virtual environment."
 | 
						|
	@echo "  run-dev      - Run FastAPI development server in the virtual environment (automatically reloads)."
 | 
						|
	@echo "  dist         - Create distribution (in dist/)."
 | 
						|
	@echo "  clean        - Remove generated documentation, distribution and virtual environment."
 | 
						|
 | 
						|
# 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
 | 
						|
	.venv/bin/pip install --upgrade pip
 | 
						|
	.venv/bin/pip install -r requirements.txt
 | 
						|
	@echo "Dependencies installed from requirements.txt."
 | 
						|
 | 
						|
# 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."
 | 
						|
 | 
						|
# 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/)."
 | 
						|
 | 
						|
# Target to generate HTML documentation
 | 
						|
docs: pip-dev
 | 
						|
	mkdir -p docs/develop
 | 
						|
	cp README.md docs/develop/getting_started.md
 | 
						|
	# remove top level header and coresponding description
 | 
						|
	sed -i '/^##[^#]/,$$!d' docs/develop/getting_started.md
 | 
						|
	sed -i "1i\# Getting Started\n" docs/develop/getting_started.md
 | 
						|
	cp CONTRIBUTING.md docs/develop
 | 
						|
	sed -i "s/README.md/getting_started.md/g" docs/develop/CONTRIBUTING.md
 | 
						|
	.venv/bin/sphinx-build -M html docs build/docs
 | 
						|
	@echo "Documentation generated to build/docs/html/."
 | 
						|
 | 
						|
# 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
 | 
						|
 | 
						|
# Clean target to remove generated documentation, distribution and virtual environment
 | 
						|
clean:
 | 
						|
	@echo "Cleaning virtual env, distribution and build directories"
 | 
						|
	rm -rf dist build .venv
 | 
						|
	@echo "Searching and deleting all '_autosum' directories in docs..."
 | 
						|
	@find docs -type d -name '_autosummary' -exec rm -rf {} +;
 | 
						|
	@echo "Deletion complete."
 | 
						|
 | 
						|
run:
 | 
						|
	@echo "Starting FastAPI server, please wait..."
 | 
						|
	.venv/bin/fastapi run --port 8503 src/akkudoktoreos/server/fastapi_server.py
 | 
						|
 | 
						|
run-dev:
 | 
						|
	@echo "Starting FastAPI development server, please wait..."
 | 
						|
	.venv/bin/fastapi dev --port 8503 src/akkudoktoreos/server/fastapi_server.py
 | 
						|
 | 
						|
# Target to setup tests.
 | 
						|
test-setup: pip-dev
 | 
						|
	@echo "Setup tests"
 | 
						|
 | 
						|
# Target to run tests.
 | 
						|
test:
 | 
						|
	@echo "Running tests..."
 | 
						|
	.venv/bin/pytest -vs --cov src --cov-report term-missing
 | 
						|
 | 
						|
# Target to run all tests.
 | 
						|
test-full:
 | 
						|
	@echo "Running all tests..."
 | 
						|
	.venv/bin/pytest --full-run
 | 
						|
 | 
						|
# Target to format code.
 | 
						|
format:
 | 
						|
	.venv/bin/pre-commit run --all-files
 | 
						|
 | 
						|
# Target to format code.
 | 
						|
mypy:
 | 
						|
	.venv/bin/mypy
 | 
						|
 | 
						|
# Run entire setup on docker
 | 
						|
docker-run:
 | 
						|
	@docker compose up --remove-orphans
 | 
						|
 | 
						|
docker-build:
 | 
						|
	@docker compose build --pull
 |