Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .DEFAULT_GOAL := help
- DIRECTORIES = $$(find -wholename ./src -o -wholename ./incolumepy -o -wholename ./tests)
- PKGNAME = 'incolumepy'
- REPORT_DIR = 'coverage_report'
- PYTHON_VERSION := 3.10
- URLCOMPARE := 'https://github.com/incolumepy-prospections/incolumepy.dataclass/compare/'
- CHANGELOGFILE := 'CHANGELOG.md'
- .PHONY: black
- black: ##Apply code style black format
- @poetry run black $(DIRECTORIES) && git commit -m "style: Applied Code style Black format automaticly at `date +"%F %T"`" . || echo
- @echo ">>> Checked code style Black format automaticly <<<"
- .PHONY: clean
- clean: ## Shallow clean into environment (.pyc, .cache, .egg, .log, et all)
- @echo -n "Starting cleanning environment .."
- @find ./ -name '*.pyc' -exec rm -f {} \;
- @find ./ -name '*~' -exec rm -f {} \;
- @find ./ -name 'Thumbs.db' -exec rm -f {} \;
- @find ./ -name '*.log' -exec rm -f {} \;
- @find ./ -name '*.log.*' -exec rm -f {} \;
- @find ./ -name ".cache" -exec rm -fr {} \;
- @find ./ -name "*.egg-info" -exec rm -rf {} \;
- @find ./ -name "*.coverage" -exec rm -rf {} \;
- @find ./ -maxdepth 1 -type d -name "*cov*" -exec rm -rf {} \;
- @rm -fv cov.xml
- @rm -rf docs/_build
- @echo " finished!"
- .PHONY: clean-all
- clean-all: clean ## Deep cleanning into environment (dist, build, htmlcov, .tox, *_cache, et all)
- @echo "Starting Deep cleanning .."
- @rm -rf dist
- @rm -rf build
- @rm -rf htmlcov
- @rm -rf coverage_report
- @rm -rf .tox
- @find ./ \( -name "*_cache" -o -name '*cache__' \) -exec rm -rf {} 2> /dev/null \;
- @#fuser -k 8000/tcp &> /dev/null
- @poetry env list|awk '{print $$1}'|while read a; do poetry env remove $${a} 2> /dev/null && echo "$${a} removed."|| echo "$${a} not removed."; done
- @echo "Deep cleaning finished!"
- .PHONY: check-black
- check-black: ## black checking
- @echo "Black checking .."
- @poetry run black --check $(DIRECTORIES)
- .PHONY: check-flake8
- check-flake8: ## flake8 checking
- @echo "flake8 checking .."
- @poetry run flake8 --config pyproject.toml $(DIRECTORIES)
- .PHONY: check-isort
- check-isort: ## check isort
- @echo "isort checking .."
- @poetry run isort --check --atomic --py all $(DIRECTORIES)
- .PHONY: check-mypy
- check-mypy: ## mypy checking
- @echo "mypy checking .."
- @poetry run mypy $(DIRECTORIES)
- .PHONY: check-pylint
- check-pylint: ## pylint checking
- @echo "pylint checking .."
- @poetry run pylint $(DIRECTORIES)
- .PHONY: check-pydocstyle
- check-pydocstyle: ## docstring checking
- @echo "pydocstyle checking .."
- @poetry run pydocstyle $(DIRECTORIES)
- .PHONY: changelog
- changelog: ## Update changelog file
- @poetry run python -c "from incolumepy.utils import update_changelog; \
- update_changelog($(CHANGELOGFILE), urlcompare=$(URLCOMPARE))"
- @echo 'Atualização de CHANGESLOG realizada com sucesso.'
- .PHONY: docsgen
- docsgen: clean changelog ## Generate documentation
- @ cd docs; make html; cd -
- @ git config core.hooksPath None
- @ git commit -m "docs: Updated documentation (`date +%F@%T`)" docs/ CHANGELOG.md
- @ git config core.hooksPath .git-hooks
- .PHONY: format
- format: isort black ## Formate project code with code style (isort, black)
- .PHONY: help
- help: ## Show this instructions
- @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
- .PHOMY: install
- install: setup ## Install this package using poetry and all dependences
- @poetry install
- # @poetry add $(PKGNAME)
- .PHONY: isort
- isort: ## isort apply
- @poetry run isort --atomic --py all $(DIRECTORIES) && git commit -m "style: Applied Code style isort format automaticly at `date +%F@%T`" . || echo
- @echo ">>> Checked code style isort format automaticly <<<"
- .PHONY: lint
- lint: ## Run all linters (check-isort, check-black, flake8, pylint, mypy, pydocstyle)
- lint: check-mypy check-pylint check-flake8 check-pydocstyle check-isort check-black
- .PHONY: premajor
- premajor: ## Generate new premajor commit version default semver
- @ git config core.hooksPath None
- @v=$$(poetry version premajor); poetry run pytest tests/ && git commit -m "$$v" pyproject.toml $$(find -name version.txt) #sem tag
- @ git config core.hooksPath .git-hooks
- .PHONY: premajor-force
- premajor-force: ## Generate new premajor commit version default semver and your tag forcing merge into main branch
- @ git config core.hooksPath None
- @msg=$$(poetry version premajor); poetry run pytest tests/; \
- git commit -m "$$msg" pyproject.toml $$(find -name version.txt) \
- && git tag -f $$(poetry version -s) -m "$$msg"; \
- git checkout main; git merge --no-ff dev -m "$$msg" \
- && git tag -f $$(poetry version -s) -m "$$msg" \
- && git checkout dev #com tag
- @ git config core.hooksPath .git-hooks
- .PHONY: preminor
- preminor: ## Generate new preminor commit version default semver
- @ git config core.hooksPath None
- @v=$$(poetry version preminor); poetry run pytest -m "not slow" tests/ && git commit -m "$$v" pyproject.toml $$(find -name version.txt) #sem tag
- @ git config core.hooksPath .git-hooks
- .PHONY: preminor-force
- preminor-force: ## Generate new preminor commit version default semver and your tag forcing merge into main branch
- @ git config core.hooksPath None
- @msg=$$(poetry version preminor); poetry run pytest tests/; \
- git commit -m "$$msg" pyproject.toml $$(find -name version.txt) \
- && git tag -f $$(poetry version -s) -m "$$msg"; \
- git checkout main; git merge --no-ff dev -m "$$msg" \
- && git tag -f $$(poetry version -s) -m "$$msg" \
- && git checkout dev #com tag
- @ git config core.hooksPath .git-hooks
- .PHONY: prepatch
- prepatch: ## Generate new prepatch commit version default semver
- @ git config core.hooksPath None
- @v=$$(poetry version prepatch); poetry run pytest -m "not slow" tests/ && git commit -m "$$v" pyproject.toml $$(find -name version.txt) #sem tag
- @ git config core.hooksPath .git-hooks
- .PHONY: prerelease
- prerelease: ## Generate new prerelease commit version default semver
- @ git config core.hooksPath None
- @v=$$(poetry version prerelease); poetry run pytest tests && git commit -m "$$v" pyproject.toml $$(find -name version.txt) #sem tag
- @ git config core.hooksPath .git-hooks
- .PHONY: prerelease-force
- prerelease-force: ## Generate new prerelease commit version default semver and your tag forcing merge into main branch
- @ git config core.hooksPath None
- @msg=$$(poetry version prerelease); poetry run pytest tests/; \
- git commit -m "$$msg" pyproject.toml $$(find -name version.txt) \
- && git tag -f $$(poetry version -s) -m "$$msg"; \
- git checkout main; git merge --no-ff dev -m "$$msg" \
- && git tag -f $$(poetry version -s) -m "$$msg" \
- && git checkout dev #com tag
- @ git config core.hooksPath .git-hooks
- .PHONY: publish-testing
- publish-testing: ## Publish on test.pypi.org
- @poetry publish -r testpypi --build
- .PHONY: release
- release: ## Generate new release commit with version/tag default semver
- @ git config core.hooksPath None
- @msg=$$(poetry version patch); poetry run pytest tests/; \
- git commit -m "$$msg" pyproject.toml $$(find -name version.txt) \
- && git tag -f $$(poetry version -s) -m "$$msg"; \
- git checkout main; git merge --no-ff dev -m "$$msg" \
- && git tag -f $$(poetry version -s) -m "$$msg" \
- && git checkout dev #com tag
- @ git config core.hooksPath .git-hooks
- .PHONY: retrocompatibility
- retrocompatibility: ## Run tox and check retrompatibility betwen python versions
- @poetry run tox -e py36,py37,py38,py39,py310
- .PHONY: safety
- safety: ## Check safety of packages into project.
- @poetry run safety check --full-report
- .PHOMY: setup
- setup: ## setup environment python with poetry
- @poetry env use $(PYTHON_VERSION)
- @git config core.hooksPath .git-hooks
- # @poetry shell
- .PHONY: stats
- stats: ## Run all tests avaliable and generate html coverage
- @poetry run pytest -sxv --cov=$(PKGNAME) --cov-report html:$(REPORT_DIR)/html --cov-report xml:$(REPORT_DIR)/cov.xml --cov-report annotate:$(REPORT_DIR)/annotate --cov-report term-missing:skip-covered tests/
- .PHONY: test
- test: ## Tun all tests on venv
- @poetry run pytest tests/
Add Comment
Please, Sign In to add comment