Reformat files according to template 15/12015/1
authorMartin Skorupski <martin.skorupski@highstreet-technologies.com>
Fri, 3 Nov 2023 16:25:19 +0000 (17:25 +0100)
committerMartin Skorupski <martin.skorupski@highstreet-technologies.com>
Fri, 3 Nov 2023 16:25:27 +0000 (17:25 +0100)
- Makeflle must be part of the project

Issue-ID: OAM-387
Change-Id: I61e24db8103928c13aea0e655687bc46c504f2c3
Signed-off-by: Martin Skorupski <martin.skorupski@highstreet-technologies.com>
code/network-generator/.gitignore
code/network-generator/Makefile [new file with mode: 0644]

index b97dd53..15b8d04 100644 (file)
@@ -18,7 +18,6 @@
 distribution
 docs
 tests
-Makefile
 Manifest.in
 mkdocs.yaml
 requirements-test.txt
diff --git a/code/network-generator/Makefile b/code/network-generator/Makefile
new file mode 100644 (file)
index 0000000..9b2c745
--- /dev/null
@@ -0,0 +1,122 @@
+.ONESHELL:
+ENV_PREFIX=$(shell python3 -c "if __import__('pathlib').Path('.venv/bin/pip').exists(): print('.venv/bin/')")
+USING_POETRY=$(shell grep "tool.poetry" pyproject.toml && echo "yes")
+
+.PHONY: help
+help:             ## Show the help.
+       @echo "Usage: make <target>"
+       @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 virtualenv' if you got errors."
+       $(ENV_PREFIX)pip install -e .[test]
+
+.PHONY: fmt
+fmt:              ## 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)black -l 79 --check network_generation/
+       $(ENV_PREFIX)black -l 79 --check tests/
+       $(ENV_PREFIX)mypy --ignore-missing-imports 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: virtualenv
+virtualenv:       ## Create a virtual environment.
+       @if [ "$(USING_POETRY)" ]; then poetry install && exit; fi
+       @echo "creating virtualenv ..."
+       @rm -rf .venv
+       @python3 -m venv .venv
+       @./.venv/bin/pip install -U pip
+       @./.venv/bin/pip install -e .[test]
+       @echo
+       @echo "!!! Please run 'source .venv/bin/activate' to enable the 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 .venv
+       @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/