6
0
mirror of https://github.com/ChristianLight/tutor.git synced 2024-12-12 14:17:46 +00:00
tutor/Makefile
Régis Behmo 8be574aac8 fix: make sure that tutor-openedx is an empty package
Previously, the tutor-openedx package was loading tons of template data from
the MANIFEST.in. Turns out, we cannot ignore the MANIFEST.in file with
setuptools. So we need to move tutor-openedx to a separate, dedicated folder.
To auto-discover the package version, we copy it at runtime (in the make
command).
2021-07-06 09:42:57 +02:00

119 lines
4.0 KiB
Makefile
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.DEFAULT_GOAL := help
.PHONY: docs
SRC_DIRS = ./tutor ./tests ./bin ./tutor-openedx
BLACK_OPTS = --exclude templates ${SRC_DIRS}
###### Development
docs: ## Build html documentation
$(MAKE) -C docs
compile-requirements: ## Compile requirements files
pip-compile requirements/base.in
pip-compile requirements/dev.in
pip-compile requirements/docs.in
upgrade-requirements: ## Upgrade requirements files
pip-compile --upgrade requirements/base.in
pip-compile --upgrade requirements/dev.in
pip-compile --upgrade requirements/docs.in
build-pythonpackage: build-pythonpackage-tutor build-pythonpackage-tutor-openedx ## Build python packages ready to upload to pypi
build-pythonpackage-tutor: ## Build the "tutor" python package for upload to pypi
python setup.py sdist
build-pythonpackage-tutor-openedx: ## Build the obsolete "tutor-openedx" python package for upload to pypi
cp tutor/__about__.py tutor-openedx/tutoropenedx/
cd tutor-openedx && python setup.py sdist --dist-dir ../dist
push-pythonpackage: ## Push python package to pypi
twine upload --skip-existing dist/tutor-$(shell make version).tar.gz
twine upload --skip-existing dist/tutor-openedx-$(shell make version).tar.gz
test: test-lint test-unit test-types test-format test-pythonpackage ## Run all tests by decreasing order or priority
test-format: ## Run code formatting tests
black --check --diff $(BLACK_OPTS)
test-lint: ## Run code linting tests
pylint --errors-only --enable=unused-import --ignore=templates ${SRC_DIRS}
test-unit: ## Run unit tests
python -m unittest discover tests
test-types: ## Check type definitions
mypy --exclude=templates --ignore-missing-imports --strict tutor/ tests/
test-pythonpackage: build-pythonpackage ## Test that package can be uploaded to pypi
twine check dist/tutor-$(shell make version).tar.gz
twine check dist/tutor-openedx-$(shell make version).tar.gz
format: ## Format code automatically
black $(BLACK_OPTS)
bootstrap-dev: ## Install dev requirements
pip install .
pip install -r requirements/dev.txt
bootstrap-dev-plugins: bootstrap-dev ## Install dev requirement and all supported plugins
pip install -r requirements/plugins.txt
###### Deployment
bundle: ## Bundle the tutor package in a single "dist/tutor" executable
pyinstaller tutor.spec
release: test release-unsafe ## Create a release tag and push it to origin
release-unsafe:
$(MAKE) release-tag release-push TAG=v$(shell make version)
release-tag:
@echo "=== Creating tag $(TAG)"
git tag -d $(TAG) || true
git tag $(TAG)
release-push:
@echo "=== Pushing tag $(TAG) to origin"
git push origin
git push origin :$(TAG) || true
git push origin $(TAG)
release-description: ## Write the current release description to a file
sed "s/TUTOR_VERSION/v$(shell make version)/g" docs/_release_description.md > release_description.md
git log -1 --pretty=format:%b >> release_description.md
###### Continuous integration tasks
pull-base-images: # Manually pull base images
docker image pull docker.io/ubuntu:20.04
docker image pull docker.io/python:3.7-alpine
ci-info: ## Print info about environment
python --version
pip --version
ci-test-bundle: ## Run basic tests on bundle
ls -lh ./dist/tutor
./dist/tutor --version
./dist/tutor config printroot
yes "" | ./dist/tutor config save --interactive
./dist/tutor config save
./dist/tutor plugins list
./dist/tutor plugins enable android discovery ecommerce license mfe minio notes webui xqueue
./dist/tutor plugins list
./dist/tutor license --help
ci-bootstrap-images:
pip install .
tutor config save
###### Additional commands
version: ## Print the current tutor version
@python -c 'import io, os; about = {}; exec(io.open(os.path.join("tutor", "__about__.py"), "rt", encoding="utf-8").read(), about); print(about["__version__"])'
ESCAPE = 
help: ## Print this help
@grep -E '^([a-zA-Z_-]+:.*?## .*|######* .+)$$' Makefile \
| sed 's/######* \(.*\)/\n $(ESCAPE)[1;31m\1$(ESCAPE)[0m/g' \
| awk 'BEGIN {FS = ":.*?## "}; {printf "\033[33m%-30s\033[0m %s\n", $$1, $$2}'