.ONESHELL: ENV_PREFIX=$(shell python -c "if __import__('pathlib').Path('.oam/bin/pip').exists(): print('.oam/bin/')") USING_POETRY=$(shell grep "tool.poetry" pyproject.toml && echo "yes") .PHONY: help help: ## Show the help. @echo "Usage: make " @echo "" @echo "Targets:" @fgrep "##" Makefile | fgrep -v fgrep .PHONY: show show: ## Show the current environment. @echo "Current environment:" @if [ "$(USING_POETRY)" ]; then poetry env info && exit; fi @echo "Running using $(ENV_PREFIX)" @$(ENV_PREFIX)python -V @$(ENV_PREFIX)python -m site .PHONY: install install: ## Install the project in dev mode. @if [ "$(USING_POETRY)" ]; then poetry install && exit; fi @echo "Don't forget to run 'make virtual_env_4_oam' if you got errors." $(ENV_PREFIX)pip install -e .[test] .PHONY: format format: ## Format code using black & isort. $(ENV_PREFIX)isort network_generation/ $(ENV_PREFIX)black -l 79 network_generation/ $(ENV_PREFIX)black -l 79 tests/ .PHONY: lint lint: ## Run pep8, black, mypy linters. $(ENV_PREFIX)flake8 network_generation/ $(ENV_PREFIX)flake8 tests/ $(ENV_PREFIX)black -l 79 --check network_generation/ $(ENV_PREFIX)black -l 79 --check tests/ $(ENV_PREFIX)mypy --ignore-missing-imports --disallow-untyped-defs --check-untyped-def network_generation/ .PHONY: test test: lint ## Run tests and generate coverage report. $(ENV_PREFIX)pytest -v --cov-config .coveragerc --cov=network_generation -l --tb=short --maxfail=1 tests/ $(ENV_PREFIX)coverage xml $(ENV_PREFIX)coverage html .PHONY: watch watch: ## Run tests on every change. ls **/**.py | entr $(ENV_PREFIX)pytest -s -vvv -l --tb=long --maxfail=1 tests/ .PHONY: clean clean: ## Clean unused files. @find ./ -name '*.pyc' -exec rm -f {} \; @find ./ -name '__pycache__' -exec rm -rf {} \; @find ./ -name 'Thumbs.db' -exec rm -f {} \; @find ./ -name '*~' -exec rm -f {} \; @rm -rf .cache @rm -rf .pytest_cache @rm -rf .mypy_cache @rm -rf build @rm -rf dist @rm -rf *.egg-info @rm -rf htmlcov @rm -rf .tox/ @rm -rf docs/_build .PHONY: virtual_env_4_oam virtual_env_4_oam: ## Create a virtual environment for O-RAN-SC OAM project. @if [ "$(USING_POETRY)" ]; then poetry install && exit; fi @echo "Creating a virtual environment for O-RAN-SC OAM project ..." @rm -rf .oam @python3 -m venv .oam @./.oam/bin/pip install -U pip @./.oam/bin/pip install -e .[test] @./.oam/bin/pip install -r requirements.txt @./.oam/bin/pip install -r requirements-test.txt @echo @echo "!!! Please run 'source .oam/bin/activate' to enable the OAM environment !!!" .PHONY: release release: ## Create a new tag for release. @echo "WARNING: This operation will create s version tag and push to github" @read -p "Version? (provide the next x.y.z semver) : " TAG @echo "$${TAG}" > network_generation/VERSION @$(ENV_PREFIX)gitchangelog > HISTORY.md @git add network_generation/VERSION HISTORY.md @git commit -m "release: version $${TAG} 🚀" @echo "creating git tag : $${TAG}" @git tag $${TAG} @git push -u origin HEAD --tags @echo "Github Actions will detect the new tag and release the new version." .PHONY: docs docs: ## Build the documentation. @echo "building documentation ..." @$(ENV_PREFIX)mkdocs build URL="site/index.html"; xdg-open $$URL || sensible-browser $$URL || x-www-browser $$URL || gnome-open $$URL || open $$URL .PHONY: switch-to-poetry switch-to-poetry: ## Switch to poetry package manager. @echo "Switching to poetry ..." @if ! poetry --version > /dev/null; then echo 'poetry is required, install from https://python-poetry.org/'; exit 1; fi @rm -rf .oam @poetry init --no-interaction --name=a_flask_test --author=rochacbruno @echo "" >> pyproject.toml @echo "[tool.poetry.scripts]" >> pyproject.toml @echo "network_generation = 'network_generation.__main__:main'" >> pyproject.toml @cat requirements.txt | while read in; do poetry add --no-interaction "$${in}"; done @cat requirements-test.txt | while read in; do poetry add --no-interaction "$${in}" --dev; done @poetry install --no-interaction @mkdir -p .github/backup @mv requirements* .github/backup @mv setup.py .github/backup @echo "You have switched to https://python-poetry.org/ package manager." @echo "Please run 'poetry shell' or 'poetry run network_generation'" .PHONY: init init: ## Initialize the project based on an application template. @./.github/init.sh # This project has been generated from rochacbruno/python-project-template # __author__ = 'rochacbruno' # __repo__ = https://github.com/rochacbruno/python-project-template # __sponsor__ = https://github.com/sponsors/rochacbruno/