104 lines
No EOL
2.7 KiB
Makefile
104 lines
No EOL
2.7 KiB
Makefile
# isort . && black . && bandit -r . && pylint && pre-commit run --all-files
|
|
# Get changed files
|
|
|
|
FILES := $(wildcard **/*.py)
|
|
|
|
# if you wrap everything in pipenv run, it runs slower.
|
|
ifeq ($(origin VIRTUAL_ENV),undefined)
|
|
VENV := poetry run
|
|
else
|
|
VENV :=
|
|
endif
|
|
|
|
|
|
|
|
clean-pyc:
|
|
@echo "Removing compiled files"
|
|
@find . -name '*.pyc' -exec rm -f {} + || true
|
|
@find . -name '*.pyo' -exec rm -f {} + || true
|
|
@find . -name '__pycache__' -exec rm -fr {} + || true
|
|
|
|
clean-test:
|
|
@echo "Removing coverage data"
|
|
@rm -f .coverage || true
|
|
@rm -f .coverage.* || true
|
|
|
|
clean: clean-pyc clean-test
|
|
|
|
# tests can't be expected to pass if dependencies aren't installed.
|
|
# tests are often slow and linting is fast, so run tests on linted code.
|
|
test: clean .build_history/pylint .build_history/bandit
|
|
@echo "Running unit tests"
|
|
export FORCE_COLOR=true
|
|
# $(VENV) pytest terminaltables3 --doctest-modules
|
|
# $(VENV) python -m unittest discover
|
|
# not all tests run in all OSs, giving seemingly low coverage.
|
|
FORCE_COLOR=true $(VENV) py.test tests --cov=terminaltables3 --cov-report=html --cov-fail-under 75
|
|
|
|
.build_history:
|
|
@mkdir -p .build_history
|
|
|
|
.build_history/isort: .build_history $(FILES)
|
|
@echo "Formatting imports"
|
|
$(VENV) isort terminaltables3
|
|
@touch .build_history/isort
|
|
|
|
.PHONY: isort
|
|
isort: .build_history/isort
|
|
|
|
.build_history/black: .build_history .build_history/isort $(FILES)
|
|
@echo "Formatting code"
|
|
$(VENV) black . --exclude .virtualenv --exclude .tox
|
|
@touch .build_history/black
|
|
|
|
.PHONY: black
|
|
black: .build_history/black
|
|
|
|
.build_history/pre-commit: .build_history .build_history/isort .build_history/black
|
|
@echo "Pre-commit checks"
|
|
$(VENV) pre-commit run --all-files
|
|
@touch .build_history/pre-commit
|
|
|
|
.PHONY: pre-commit
|
|
pre-commit: .build_history/pre-commit
|
|
|
|
.build_history/bandit: .build_history $(FILES)
|
|
@echo "Security checks"
|
|
$(VENV) bandit .
|
|
@touch .build_history/bandit
|
|
|
|
.PHONY: bandit
|
|
bandit: .build_history/bandit
|
|
|
|
.PHONY: pylint
|
|
.build_history/pylint: .build_history .build_history/isort .build_history/black $(FILES)
|
|
@echo "Linting with pylint"
|
|
# TODO lint tests
|
|
$(VENV) pylint terminaltables3 --fail-under 10
|
|
@touch .build_history/pylint
|
|
|
|
.PHONY: ruff
|
|
.build_history/ruff: .build_history .build_history/isort .build_history/black $(FILES)
|
|
@echo "Linting with ruff"
|
|
$(VENV) ruff check terminaltables3 tests --fix
|
|
@touch .build_history/ruff
|
|
|
|
.PHONY: ruff
|
|
ruff: .build_history/ruff
|
|
|
|
# for when using -j (jobs, run in parallel)
|
|
.NOTPARALLEL: .build_history/isort .build_history/black
|
|
|
|
check: test pylint ruff bandit pre-commit
|
|
|
|
.PHONY: publish
|
|
publish: check
|
|
rm -rf dist && poetry build
|
|
|
|
.PHONY: build
|
|
build: check
|
|
rm -rf dist && poetry build
|
|
|
|
.PHONY: mypy
|
|
mypy:
|
|
$(VENV) mypy terminaltables3 --ignore-missing-imports --check-untyped-defs
|