summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorAnike Arni <anikarni@gmail.com>2017-01-10 11:34:01 -0200
committerGitHub <noreply@github.com>2017-01-10 11:34:01 -0200
commit67f06daab61be9ec763fd228cf51a4d3f9c091a3 (patch)
treec7bbf6ec32d9b9eb5ab5ab3eac04fc60a6fcf253 /Makefile
parentbc84433a06a742c3b29e115fb9e88c86df0f2b1c (diff)
parent96e377d4957b32db440f8179d4c1b16de724fa71 (diff)
Merge pull request #899 from bwagnerr/make
Creates a unified makefile for pixelated client and web-ui
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile162
1 files changed, 162 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..ec865cf5
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,162 @@
+VIRTUALENV=~/.venvs/pixua
+
+.PHONY: setup
+setup: install
+
+.PHONY: requirements
+requirements: requirements_py requirements_js
+ @echo "Installed requirements"
+
+.PHONY: install
+install: requirements install_py install_js
+ @echo "Installed dependencies"
+
+.PHONY: requirements_py
+requirements_py: create_virtualenv
+ @echo "Upgrading pip and setuptools"
+ @. $(VIRTUALENV)/bin/activate;\
+ pip install --upgrade pip setuptools
+
+.PHONY: install_py
+install_py: service/requirements.txt service/test_requirements.txt
+ @echo "Installing python packages"
+ @. $(VIRTUALENV)/bin/activate;\
+ cd service;\
+ pip install pysqlcipher --upgrade --force-reinstall --install-option="--bundled";\
+ pip install --exists-action s -r requirements.txt -r test_requirements.txt
+
+.PHONY: requirements_js
+requirements_js:
+ @echo "Installing javascript npm and bower dependencies"
+ @cd web-ui;\
+ npm install
+
+.PHONY: install_js
+install_js:
+ @echo "Building front-end and static files"
+ @cd web-ui;\
+ npm run build
+
+.PHONY: create_virtualenv
+create_virtualenv: ensure_virtualenv_installed
+ @if [ ! -e $(VIRTUALENV)/bin/activate ]; then\
+ echo "Pixelated virtualenv doesn't exist, creating now";\
+ virtualenv --python=python2 $(VIRTUALENV);\
+ else\
+ echo "Pixelated virtualenv already exists, moving on";\
+ fi
+
+.PHONY: test
+test: test_py test_js coverage
+
+.PHONY: test_py
+test_py: clean requirements install coverage linters_py unit_tests_py integration_tests_py
+
+.PHONY: test_js
+test_js: clean requirements_js install_js linters_js unit_tests_js
+
+.PHONY: test_all
+test_all: test functional_tests
+
+.PHONY: linters
+linters: clean requirements install linters_py linters_js
+
+.PHONY: linters_py
+linters_py:
+ @echo "Running pep8"
+ @. $(VIRTUALENV)/bin/activate;\
+ cd service;\
+ pep8 --ignore=E501 pixelated test
+
+.PHONY: linters_js
+linters_js:
+ @echo "Running jshint"
+ @cd web-ui;\
+ npm run jshint
+
+.PHONY: coverage
+coverage:
+ @. $(VIRTUALENV)/bin/activate;\
+ cd service;\
+ coverage run -p --source=pixelated `which trial` test.unit;\
+ coverage run -p --source=pixelated `which trial` test.integration;\
+ coverage combine;\
+ coverage html
+
+.PHONY: unit_tests_py
+unit_tests_py:
+ @echo "Running python unit tests"
+ @. $(VIRTUALENV)/bin/activate;\
+ cd service;\
+ trial --reporter=text test.unit
+
+.PHONY: unit_tests_js
+unit_tests_js:
+ @echo "Running javascript unit tests"
+ @cd web-ui;\
+ npm run test
+
+.PHONY: integration_tests_py
+integration_tests:
+ @echo "Running integration tests"
+ @. $(VIRTUALENV)/bin/activate;\
+ cd service;\
+ trial -j`grep -c "^processor" /proc/cpuinfo || sysctl -n hw.logicalcpu` --reporter=text test.integration
+
+.PHONY: functional_tests
+functional_tests: clean requirements install ensure_phantomjs_installed
+ @echo "Running behave functional tests"
+ @. $(VIRTUALENV)/bin/activate;\
+ cd service;\
+ behave --tags ~@wip --tags ~@smoke test/functional/features
+
+.PHONY: ensure_phantomjs_installed
+ensure_phantomjs_installed:
+ @if [ ! `which phantomjs` ]; then\
+ echo "You need phantomJS to run these tests";\
+ exit 1;\
+ fi
+
+.PHONY: ensure_virtualenv_installed
+ensure_virtualenv_installed:
+ @if [ ! `which virtualenv` ]; then\
+ echo "Virtualenv must be installed";\
+ exit 1;\
+ else\
+ echo "Virtualenv located at "`which virtualenv`;\
+ fi
+
+.PHONY: clean
+clean: clean_py clean_js clean_cache
+ @echo "Cleaning temporary files and the caches"
+
+.PHONY: clean_all
+clean_all: clean remove_javascript_packages remove_virtualenv
+ @echo "Cleaning temporary files, the caches and the virtualenv"
+
+.PHONY: clean_py
+clean_py:
+ rm -rf service/_trial_temp
+ find . -name "*.pyc" -delete
+ rm -rf service/.coverage
+ rm -rf service/htmlcov
+
+.PHONY: clean_js
+clean_js:
+ rm -rf web-ui/dist
+ rm -rf web-ui/.sass-cache
+
+.PHONY: clean_cache
+clean_cache:
+ rm -rf ~/.config/leap
+ rm -rf ~/.leap
+ rm -rf service/ghostdriver.log
+
+.PHONY: remove_virtualenv
+remove_virtualenv:
+ rm -rf $(VIRTUALENV)
+
+.PHONY: remove_javascript_packages
+remove_javascript_packages:
+ rm -rf web-ui/node_modules
+ rm -rf web-ui/app/bower_components