124 lines
3.2 KiB
Makefile
124 lines
3.2 KiB
Makefile
#* Variables
|
|
SHELL := /usr/bin/env bash
|
|
PYTHON := python
|
|
PYTHONPATH := `pwd`
|
|
|
|
#* Docker variables
|
|
IMAGE := internet_ml
|
|
VERSION := latest
|
|
|
|
#* Docs
|
|
.PHONY: docs-dev
|
|
docs-dev:
|
|
mkdocs serve
|
|
|
|
.PHONY: docs-build
|
|
docs-build:
|
|
mkdocs build
|
|
|
|
#* Poetry
|
|
.PHONY: poetry-download
|
|
poetry-download:
|
|
curl -sSL https://install.python-poetry.org | $(PYTHON) -
|
|
|
|
.PHONY: poetry-remove
|
|
poetry-remove:
|
|
curl -sSL https://install.python-poetry.org | $(PYTHON) - --uninstall
|
|
|
|
#* Installation
|
|
.PHONY: install
|
|
install:
|
|
poetry lock -n && poetry export --without-hashes > requirements.txt
|
|
poetry install -n
|
|
-poetry run mypy --install-types --non-interactive ./
|
|
|
|
.PHONY: pre-commit-install
|
|
pre-commit-install:
|
|
poetry run pre-commit install
|
|
|
|
#* Formatters
|
|
.PHONY: codestyle
|
|
codestyle:
|
|
poetry run pyupgrade --exit-zero-even-if-changed --py311-plus **/*.py
|
|
poetry run isort --settings-path pyproject.toml ./
|
|
poetry run black --config pyproject.toml ./
|
|
poetry run mypy --config pyproject.toml ./
|
|
|
|
.PHONY: formatting
|
|
formatting: codestyle
|
|
|
|
#* Linting
|
|
.PHONY: test
|
|
test:
|
|
PYTHONPATH=$(PYTHONPATH) poetry run pytest -c pyproject.toml --cov-report=html --cov=internet_ml tests/
|
|
poetry run coverage-badge -o assets/images/coverage.svg -f
|
|
|
|
.PHONY: check-codestyle
|
|
check-codestyle:
|
|
poetry run isort --diff --check-only --settings-path pyproject.toml ./
|
|
poetry run black --diff --check --config pyproject.toml ./
|
|
poetry run darglint --verbosity 2 internet_ml tests
|
|
|
|
.PHONY: mypy
|
|
mypy:
|
|
poetry run mypy --config-file pyproject.toml ./
|
|
|
|
.PHONY: check-safety
|
|
check-safety:
|
|
poetry check
|
|
poetry run safety check --full-report
|
|
poetry run bandit -ll --recursive internet_ml tests
|
|
|
|
.PHONY: lint
|
|
lint: test check-codestyle mypy check-safety
|
|
|
|
.PHONY: update-dev-deps
|
|
update-dev-deps:
|
|
poetry add -D bandit@latest darglint@latest "isort[colors]@latest" mypy@latest pre-commit@latest pydocstyle@latest pylint@latest pytest@latest pyupgrade@latest safety@latest coverage@latest coverage-badge@latest pytest-html@latest pytest-cov@latest
|
|
poetry add -D --allow-prereleases black@latest
|
|
|
|
#* Container / Docker
|
|
# Example: make container-build VERSION=latest
|
|
# Example: make container-build IMAGE=some_name VERSION=0.1.0
|
|
.PHONY: container-build
|
|
container-build:
|
|
@echo Building container $(IMAGE):$(VERSION) ...
|
|
docker build \
|
|
-t $(IMAGE):$(VERSION) . \
|
|
-f ./container/Containerfile --no-cache
|
|
|
|
# Example: make container-remove VERSION=latest
|
|
# Example: make container-remove IMAGE=some_name VERSION=0.1.0
|
|
.PHONY: container-remove
|
|
container-remove:
|
|
@echo Removing container $(IMAGE):$(VERSION) ...
|
|
docker rmi -f $(IMAGE):$(VERSION)
|
|
|
|
#* Cleaning
|
|
.PHONY: pycache-remove
|
|
pycache-remove:
|
|
find . | grep -E "(__pycache__|\.pyc|\.pyo$$)" | xargs rm -rf
|
|
|
|
.PHONY: dsstore-remove
|
|
dsstore-remove:
|
|
find . | grep -E ".DS_Store" | xargs rm -rf
|
|
|
|
.PHONY: mypycache-remove
|
|
mypycache-remove:
|
|
find . | grep -E ".mypy_cache" | xargs rm -rf
|
|
|
|
.PHONY: ipynbcheckpoints-remove
|
|
ipynbcheckpoints-remove:
|
|
find . | grep -E ".ipynb_checkpoints" | xargs rm -rf
|
|
|
|
.PHONY: pytestcache-remove
|
|
pytestcache-remove:
|
|
find . | grep -E ".pytest_cache" | xargs rm -rf
|
|
|
|
.PHONY: build-remove
|
|
build-remove:
|
|
rm -rf build/
|
|
|
|
.PHONY: cleanup
|
|
cleanup: pycache-remove dsstore-remove mypycache-remove ipynbcheckpoints-remove pytestcache-remove
|