forked from galaxyproject/pulsar
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
183 lines (139 loc) · 5.59 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# Default tests run with make test
NOSE_TESTS?=test pulsar
# Default environment for make tox
ENV?=py27
# Extra arguments supplied to tox command
ARGS?=
# Location of virtualenv used for development.
VENV?=.venv
# Source virtualenv to execute command (flake8, sphinx, twine, etc...)
IN_VENV=if [ -f $(VENV)/bin/activate ]; then . $(VENV)/bin/activate; fi;
# TODO: add this upstream as a remote if it doesn't already exist.
UPSTREAM?=galaxyproject
SOURCE_DIR?=pulsar
BUILD_SCRIPTS_DIR=tools
DEV_RELEASE?=0
VERSION?=$(shell DEV_RELEASE=$(DEV_RELEASE) python $(BUILD_SCRIPTS_DIR)/print_version_for_release.py $(SOURCE_DIR) $(DEV_RELEASE))
DOC_URL?=https://pulsar.readthedocs.org
PROJECT_URL?=https://github.com/galaxyproject/pulsar
PROJECT_NAME?=pulsar-app
TEST_DIR?=test
.PHONY: clean-pyc clean-build docs clean
help:
@echo "clean - remove all build, test, coverage and Python artifacts"
@echo "clean-build - remove build artifacts"
@echo "clean-pyc - remove Python file artifacts"
@echo "clean-test - remove test and coverage artifacts"
@echo "setup-venv - setup a development virutalenv in current directory."
@echo "lint - check style with flake8"
@echo "lint-dist - twine check dist results, including validating README content"
@echo "lint-docs - check sphinx docs for warnings"
@echo "tests - run tests quickly with the default Python"
@echo "coverage - check code coverage quickly with the default Python"
@echo "docs - generate Sphinx HTML documentation, including API docs"
@echo "dist - package project for PyPI distribution"
@echo "open-docs - open docs built locally with make docs"
@echo "open-rtd - open docs at pulsar.readthedocs.org"
@echo "open-project - open project on github"
@echo "setup-git-hook-lint - setup precommit hook for linting project"
@echo "setup-git-hook-lint-and-test - setup precommit hook for linting and testing project"
clean: clean-build clean-pyc clean-tests
clean-build:
rm -fr build/
rm -fr dist/
rm -fr pulsar.*.egg-info
rm -rf docker/coexecutor/*whl
clean-pyc:
find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} +
find . -name '*~' -exec rm -f {} +
find . -name '__pycache__' -exec rm -fr {} +
clean-tests:
rm -fr .tox/
rm -f .coverage
rm -fr htmlcov/
setup-venv:
if [ ! -d $(VENV) ]; then virtualenv $(VENV); exit; fi;
$(IN_VENV) pip install -r requirements.txt && pip install -r dev-requirements.txt
setup-git-hook-lint:
cp $(BUILD_SCRIPTS_DIR)/pre-commit-lint .git/hooks/pre-commit
setup-git-hook-lint-and-test:
cp $(BUILD_SCRIPTS_DIR)/pre-commit-lint-and-test .git/hooks/pre-commit
flake8:
$(IN_VENV) flake8 --max-complexity 9 $(SOURCE_DIR) $(TEST_DIR)
lint:
$(IN_VENV) tox -e py37-lint
_lint-dist:
$(IN_VENV) twine check dist/*
lint-dist: dist _lint-dist
tests:
$(IN_VENV) nosetests $(NOSE_TESTS)
test-install-pypi:
bash install_test/test_install.bash
test-install-wheel: dist
PULSAR_INSTALL_TARGET=$(wildcard $(shell pwd)/dist/pulsar_app*.whl)[web] bash install_test/test_install_conda.bash
test-install-wheel-no-conda: dist
PULSAR_INSTALL_TARGET=$(wildcard $(shell pwd)/dist/pulsar_app*.whl)[web] bash install_test/test_install.bash
coverage:
coverage run --source $(SOURCE_DIR) setup.py $(TEST_DIR)
coverage report -m
coverage html
open htmlcov/index.html || xdg-open htmlcov/index.html
develop:
python setup.py develop
develop-galaxy:
PULSAR_GALAXY_LIB=1 python setup.py develop
ready-docs:
rm -f docs/$(SOURCE_DIR).rst
rm -f docs/modules.rst
$(IN_VENV) sphinx-apidoc -f -o docs/ $(SOURCE_DIR)
docs: ready-docs
$(IN_VENV) $(MAKE) -C docs clean
$(IN_VENV) $(MAKE) -C docs html
lint-docs: ready-docs
if [ -f .venv/bin/activate ]; then . .venv/bin/activate; fi; $(MAKE) -C docs clean
if [ -f .venv/bin/activate ]; then . .venv/bin/activate; fi; ! (make -C docs html 2>&1 | grep -v 'nonlocal image URI found\|included in any toctree' | grep WARNING)
_open-docs:
open docs/_build/html/index.html || xdg-open docs/_build/html/index.html
open-docs: docs _open-docs
open-rtd: docs
open $(DOC_URL) || xdg-open $(PROJECT_URL)
open-project:
open $(PROJECT_URL) || xdg-open $(PROJECT_URL)
format: ## Format Python code base
$(IN_VENV) isort .
dist: clean-build clean-pyc
$(IN_VENV) python setup.py sdist bdist_wheel
ls -l dist
_release-test-artifacts:
$(IN_VENV) twine upload -r test dist/*
open https://testpypi.python.org/pypi/$(PROJECT_NAME) || xdg-open https://testpypi.python.org/pypi/$(PROJECT_NAME)
dist-all: dist _dist-lib _lint-dist
release-test-artifacts: dist-all _release-test-artifacts
_release-artifacts:
@while [ -z "$$CONTINUE" ]; do \
read -r -p "Have you executed release-test and reviewed results? [y/N]: " CONTINUE; \
done ; \
[ $$CONTINUE = "y" ] || [ $$CONTINUE = "Y" ] || (echo "Exiting."; exit 1;)
@echo "Releasing"
$(IN_VENV) twine upload dist/*
release-artifacts: release-test-artifacts _release-artifacts
commit-version:
$(IN_VENV) DEV_RELEASE=$(DEV_RELEASE) python $(BUILD_SCRIPTS_DIR)/commit_version.py $(SOURCE_DIR) $(VERSION)
new-version:
$(IN_VENV) DEV_RELEASE=$(DEV_RELEASE) python $(BUILD_SCRIPTS_DIR)/new_version.py $(SOURCE_DIR) $(VERSION)
release-local: commit-version release-artifacts new-version
push-release:
git push $(UPSTREAM) master
git push --tags $(UPSTREAM)
release: release-local push-release
add-history:
$(IN_VENV) python $(BUILD_SCRIPTS_DIR)/bootstrap_history.py $(ITEM)
_dist-lib:
$(IN_VENV) PULSAR_GALAXY_LIB=1 python setup.py sdist bdist_wheel
ls -l dist
dist-lib: clean-pyc clean-build _dist-lib
build-coexecutor-container:
$(MAKE) -C docker/coexecutor all
#release-test-lib-artifacts: dist-lib _release-test-artifacts
#release-lib-artifacts: release-test-lib-artifacts _release-artifacts