summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile66
1 files changed, 66 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..7f23fa7
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,66 @@
+.PHONY: install
+install: ## Install the poetry environment and install the pre-commit hooks
+ @echo "🚀 Creating virtual environment using pyenv and poetry"
+ @poetry install
+ @poetry run pre-commit install
+ @poetry shell
+
+.PHONY: check
+check: ## Run code quality tools.
+ @echo "🚀 Checking Poetry lock file consistency with 'pyproject.toml': Running poetry lock --check"
+ @poetry check --lock
+ @echo "🚀 Linting code: Running pre-commit"
+ @poetry run pre-commit run -a
+ @echo "🚀 Static type checking: Running mypy"
+ @poetry run mypy
+ @echo "🚀 Checking for obsolete dependencies: Running deptry"
+ @poetry run deptry .
+
+.PHONY: test
+test: ## Test the code with pytest
+ @echo "🚀 Testing code: Running pytest"
+ @poetry run pytest --doctest-modules
+
+.PHONY: build
+build: clean-build ## Build wheel file using poetry
+ @echo "🚀 Creating wheel file"
+ @poetry build
+
+.PHONY: clean-build
+clean-build: ## clean build artifacts
+ @rm -rf dist
+
+.PHONY: publish
+publish: ## publish a release to pypi.
+ @echo "🚀 Publishing: Dry run."
+ @poetry config pypi-token.pypi $(PYPI_TOKEN)
+ @poetry publish --dry-run
+ @echo "🚀 Publishing."
+ @poetry publish
+
+.PHONY: build-and-publish
+build-and-publish: build publish ## Build and publish.
+
+.PHONY: docs-test
+docs-test: ## Test if documentation can be built without warnings or errors
+ @poetry run mkdocs build -s
+
+.PHONY: docs
+docs: ## Build and serve the documentation
+ @poetry run mkdocs serve
+
+.PHONY: help
+help:
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
+
+# TODO: macos Signing: https://gist.github.com/txoof/0636835d3cc65245c6288b2374799c43
+.PHONY: gui
+gui: ## Build and serve the documentation
+ @poetry run pyinstaller --noconfirm \
+ --windowed --onefile \
+ --name "TIDAL Downloader NG" \
+ --noupx \
+ --icon tidal_dl_ng/ui/icon.png \
+ tidal_dl_ng/gui.py
+
+.DEFAULT_GOAL := help