7
0
mirror of https://github.com/ChristianLight/tutor.git synced 2024-05-28 20:00:49 +00:00
tutor/Makefile
Régis Behmo bc21102cf4 Make configuration silent (non-interactive) by default
Thus, we remove the -y/--yes options, which were kind of unintuitive,
and we add instead `-i/--interactive`. The quickstart commands remain
interactive by default, but can be silenced with `-I/--non-interactive`.
2019-06-07 22:49:45 +02:00

117 lines
3.7 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
BLACK_OPTS = --exclude templates ./tutor ./tests ./plugins
###### Development
compile-requirements: ## Compile requirements files
pip-compile -o requirements/base.txt requirements/base.in
pip-compile -o requirements/dev.txt requirements/dev.in
pip-compile -o requirements/docs.txt requirements/docs.in
test: test-lint test-unit test-format ## 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 tutor tests plugins
test-unit: test-unit-core test-unit-plugins ## Run unit tests
test-unit-core:
python3 -m unittest discover tests
test-unit-plugins:
python3 -m unittest discover plugins/minio/tests
format: ## Format code automatically
black $(BLACK_OPTS)
###### Deployment
bundle: ## Bundle the tutor package in a single "dist/tutor" executable
# TODO bundle plugins
pyinstaller --onefile --name=tutor --add-data=./tutor/templates:./tutor/templates ./bin/main
dist/tutor:
$(MAKE) bundle
nightly: ## Create a "nightly" release
$(MAKE) tag TAG=nightly
release: ## Create a release tag and push it to origin
$(MAKE) tag TAG=v$(shell make version)
tag:
@echo "=== Creating tag $(TAG)"
git tag -d $(TAG) || true
git tag $(TAG)
@echo "=== Pushing tag $(TAG)"
git push origin :$(TAG) || true
git push origin $(TAG)
###### Continuous integration tasks
ci-info: ## Print info about environment
python3 --version
pip3 --version
ci-install: ## Install requirements
pip3 install -U setuptools
pip3 install -r requirements/dev.txt
pip3 install -r requirements/plugins.txt
ci-bundle: ## Create bundle and run basic tests
$(MAKE) bundle
mkdir -p releases/
./dist/tutor --version
./dist/tutor config printroot
yes "" | ./dist/tutor config save --interactive
./dist/tutor config save --set ACTIVATE_NOTES=true --set ACTIVATE_XQUEUE=true
./releases/github-release: ## Download github-release binary
cd releases/ \
&& curl -sSL -o ./github-release.tar.bz2 "https://github.com/aktau/github-release/releases/download/v0.7.2/$(shell uname -s | tr "[:upper:]" "[:lower:]")-amd64-github-release.tar.bz2" \
&& bzip2 -d -f ./github-release.tar.bz2 \
&& tar xf github-release.tar \
&& mv "bin/$(shell uname -s | tr "[:upper:]" "[:lower:]")/amd64/github-release" .
ci-github: ./releases/github-release ## Upload assets to github
sed "s/TUTOR_VERSION/v$(shell make version)/g" docs/_release_description.md > releases/description.md
git log -1 --pretty=format:%b >> releases/description.md
./releases/github-release release \
--user regisb \
--repo tutor \
--tag "v$(shell make version)" \
--name "v$(shell make version)" \
--description "$$(cat releases/description.md)" || true
./releases/github-release upload \
--user regisb \
--repo tutor \
--tag "v$(shell make version)" \
--name "tutor-$$(uname -s)_$$(uname -m)" \
--file ./dist/tutor \
--replace
ci-images: ## Build and push docker images to hub.docker.com
python setup.py develop
tutor images build all
tutor local init
docker login -u "$$DOCKER_USERNAME" -p "$$DOCKER_PASSWORD"
tutor images push all
ci-pypi: ## Push release to pypi
pip install twine
python setup.py sdist
twine upload dist/*.tar.gz
###### 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}'