mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2025-06-27 16:36:53 +00:00
* Allow to configure planes and configuration values of planes separatedly. Make single configuration values for planes explicitly available for configuration. Still allows to also configure a plane by a whole plane value struct. * Enhance admin page by file import and export of the EOS configuration The actual EOS configuration can now be exported to the EOSdash server. From there it can be also imported. For security reasons only import and export from/ to a predefined directory on the EOSdash server is possible. * Improve handling of nested value pathes in pydantic models. Added separate methods for nested path access (get_nested_value, set_nested_value). On value setting the missing fields along the nested path are now added automatically and initialized with default values. Nested path access was before restricted to the EOS configuration and is now part of the pydantic base model. * Makefile Add new target to run rests as CI does on Github. Improve target docs. * Datetimeutil tests Prolong acceptable time difference for comparison of approximately equal times in tests. Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
140 lines
5.0 KiB
Makefile
140 lines
5.0 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 " gen-docs - Generate openapi.json and docs/_generated/*.""
|
|
@echo " clean-docs - Remove generated documentation.""
|
|
@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)."
|
|
@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."
|
|
@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 documentation
|
|
gen-docs: pip-dev
|
|
.venv/bin/pip install -e .
|
|
.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
|
|
docs: pip-dev
|
|
.venv/bin/sphinx-build -M html docs build/docs
|
|
@echo "Documentation build 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 and documentation artefacts
|
|
clean-docs:
|
|
@echo "Searching and deleting all '_autosum' directories in docs..."
|
|
@find docs -type d -name '_autosummary' -exec rm -rf {} +;
|
|
@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
|
|
@echo "Deletion complete."
|
|
|
|
run:
|
|
@echo "Starting EOS production server, please wait..."
|
|
.venv/bin/python -m akkudoktoreos.server.eos
|
|
|
|
run-dev:
|
|
@echo "Starting EOS development server, please wait..."
|
|
.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
|
|
|
|
# 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 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
|
|
|
|
# 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
|