-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathMakefile
158 lines (122 loc) · 4.85 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
# Default tests run with make test
#NOSE_TESTS?=test starforge
# 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?=starforge
BUILD_SCRIPTS_DIR=tools
VERSION?=$(shell python $(BUILD_SCRIPTS_DIR)/print_version_for_release.py $(SOURCE_DIR))
DOC_URL?=https://starforge.readthedocs.org
PROJECT_URL?=https://github.com/galaxyproject/starforge
PROJECT_NAME?=starforge
#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-readme - check README formatting for PyPI"
@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 starforge.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
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 py27-lint && tox -e py34-lint
lint-readme:
$(IN_VENV) python setup.py check -r -s
#tests:
# $(IN_VENV) nosetests $(NOSE_TESTS)
#test-install-pypi:
# bash install_test/test_install.bash
#test-install-wheel: dist
# PULSAR_INSTALL_TARGET=$(shell pwd)/dist/pulsar_app*.whl bash install_test/test_install_conda.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
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)
dist: clean
$(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
release-test-artifacts: dist-all lint-readme _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) python $(BUILD_SCRIPTS_DIR)/commit_version.py $(SOURCE_DIR) $(VERSION)
new-version:
$(IN_VENV) 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)