diff --git a/.gitignore b/.gitignore index 35e8b939..cb78e40b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,11 @@ budget/budget.db +budget.db budget/memory budget/settings.py *.pyc *.egg-info dist .venv +docs/_build/ +.tox +dist diff --git a/.travis.yml b/.travis.yml index 8ab4eba6..8536228e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,8 @@ language: python -python: - - "2.7" - - "3.5" -# command to install dependencies -install: "pip install -r budget/requirements.txt" -# command to run tests -script: cd budget && python tests.py +script: tox +install: + - pip install tox +env: + - TOXENV=py27 + - TOXENV=py35 + - TOXENV=docs diff --git a/CHANGELOG.rst b/CHANGELOG.rst index a3c05f02..a8a8083a 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -3,7 +3,7 @@ Changelog This document describes changes between each past release. -1.0.0 (unreleased) +1.0.0 (2017-03-21) ------------------ - First release of the project. diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..1ac7e197 --- /dev/null +++ b/Makefile @@ -0,0 +1,39 @@ +VIRTUALENV = virtualenv --python=python3 +SPHINX_BUILDDIR = docs/_build +VENV := $(shell echo $${VIRTUAL_ENV-.venv}) +PYTHON = $(VENV)/bin/python3 +DEV_STAMP = $(VENV)/.dev_env_installed.stamp +DOC_STAMP = $(VENV)/.doc_env_installed.stamp +INSTALL_STAMP = $(VENV)/.install.stamp +TEMPDIR := $(shell mktemp -d) + +all: install +install: $(INSTALL_STAMP) +$(INSTALL_STAMP): + $(VENV)/bin/pip install -U pip + $(VENV)/bin/pip install -r requirements.txt + touch $(INSTALL_STAMP) + +virtualenv: $(PYTHON) +$(PYTHON): + $(VIRTUALENV) $(VENV) + +install-dev: $(INSTALL_STAMP) $(DEV_STAMP) +$(DEV_STAMP): $(PYTHON) dev-requirements.txt + $(VENV)/bin/pip install -Ur dev-requirements.txt + touch $(DEV_STAMP) + +serve: $(INSTALL_STAMP) + cd budget; ../$(PYTHON) run.py + +test: $(DEV_STAMP) + $(VENV)/bin/tox + +release: $(DEV_STAMP) + $(VENV)/bin/fullrelease + +build-requirements: + $(VIRTUALENV) $(TEMPDIR) + $(TEMPDIR)/bin/pip install -U pip + $(TEMPDIR)/bin/pip install -Ue "." + $(TEMPDIR)/bin/pip freeze | grep -v -- '-e' > requirements.txt diff --git a/Procfile b/Procfile deleted file mode 100644 index d147525f..00000000 --- a/Procfile +++ /dev/null @@ -1 +0,0 @@ -web: python budget/run.py diff --git a/README.rst b/README.rst index 30fd094b..5b7bb4d0 100644 --- a/README.rst +++ b/README.rst @@ -16,13 +16,9 @@ LICENSE for more details). Make it run! ============ -To make it run, you just have to do something like:: +To make it run, you just have to do use the serve command:: - $ virtualenv venv - $ source venv/bin/activate - $ pip install -r budget/requirements.txt - $ cd budget - $ python run.py + $ make serve It is also better to actually turn the debugging mode on when you're developing. You can create a `settings.py` file in the `budget` directory, with @@ -37,11 +33,7 @@ You can also set the `TESTING` flag to `True` so no mails are sent Deploy it ========= -To deploy it, I'm using gunicorn and supervisord:: - - $ virtualenv venv - $ source venv/bin/activate - $ pip install -r requirements.txt +To deploy it, I'm using gunicorn and supervisord. 1. Add the lines in conf/supervisord.conf to your supervisord.conf file. **adapt them to your paths!** @@ -58,9 +50,8 @@ e.g: APPLICATION_ROOT='/budget' - -How about the REST API? -======================= +The REST API? +============= Yep, you're right, there is a REST API with this. Head to the `api documentation `_ to know more. @@ -68,22 +59,22 @@ documentation `_ to know m How to contribute ================= +You would like to contribute? First, thanks a bunch! This project is a small +project with just a few people behind it, so any help is appreciated! + There are different ways to help us, regarding if you are a designer, -a developer or just an user. +a developer or an user. As a developer -------------- -The best way to contribute code is to write it and to make a pull request on +If you want to contribute code, you can write it and then issue a pull request on github. Please, think about updating and running the tests before asking for a pull request as it will help us to maintain the code clean and running. To do so:: - $ workon budget - (budget) $ python tests.py - -before pushing anything to master :) + $ make tests As a designer / Front-end developer ----------------------------------- @@ -95,36 +86,31 @@ know how to implement them, feel free to fork and make a pull request. End-user -------- -You just wanted to have a look at the application and found a bug? Please tell -us and go fill a new issue: -https://github.com/spiral-project/ihatemoney/issues +You are using the application and found a bug? You have some ideas about how to +improve the project? Please tell us [by filling a new issue](https://github.com/spiral-project/ihatemoney/issues). +Or, if you prefer, you can send me an email to `alexis@notmyidea.org` and I will +update the issue tracker with your feedback. + +Thanks again! How to release? =============== -In order to prepare a new release, we are following the following steps. +In order to prepare a new release, we are following the following steps: -The `fullrelease` command comes from `zest.releaser -`_. - -Install `zest.releaser`: - -.. code-block:: bash - - $ pip install "zest.releaser" - -- Merge remaining pull requests -- Update ``CHANGELOG.rst`` +- Merge remaining pull requests; +- Update :file:`CHANGELOG.rst` with the last changes; +- Update :file:`CONTRIBUTORS`; - Update known good versions of dependencies in ``requirements.txt`` with this command (from inside the venv): .. code-block:: bash $ pip freeze | grep -v -- '-e' > requirements.txt -Once this is done, use the "fullrelease" command: +Once this is done, use the "release" instruction: .. code-block:: bash - $ fullrelease + $ make release -That's all folks! +And the new version should be published on PyPI. diff --git a/budget/run.py b/budget/run.py index f006ae91..9745b60f 100644 --- a/budget/run.py +++ b/budget/run.py @@ -1,4 +1,5 @@ import os +import os.path import warnings from flask import Flask, g, request, session @@ -11,6 +12,7 @@ from api import api from utils import PrefixedWSGI from utils import minimal_round +__HERE__ = os.path.dirname(os.path.abspath(__file__)) app = Flask(__name__) @@ -65,7 +67,7 @@ if pre_alembic_db(): # auto-execute migrations on runtime with app.app_context(): - upgrade() + upgrade(os.path.join(__HERE__, 'migrations')) # mail mail.init_app(app) diff --git a/dev-requirements.txt b/dev-requirements.txt new file mode 100644 index 00000000..0bbb0aa0 --- /dev/null +++ b/dev-requirements.txt @@ -0,0 +1,2 @@ +zest.releaser +tox diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 00000000..8982892c --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,3 @@ +docutils<0.13 +Sphinx +sphinx_rtd_theme diff --git a/fabfile.py b/fabfile.py deleted file mode 100644 index 7e717391..00000000 --- a/fabfile.py +++ /dev/null @@ -1,13 +0,0 @@ -from fabric.api import env, cd, sudo, run - -env.hosts = ['sites.lolnet.lan'] - - -def deploy(): - with cd('/home//www/ihatemoney.org/code'): - sudo('git pull', user="www-data") - sudo('supervisorctl restart ihatemoney.org') - - -def whoami(): - run('/usr/bin/whoami') diff --git a/budget/requirements.txt b/requirements.txt similarity index 100% rename from budget/requirements.txt rename to requirements.txt diff --git a/tox.ini b/tox.ini new file mode 100644 index 00000000..8fc8cbb1 --- /dev/null +++ b/tox.ini @@ -0,0 +1,19 @@ +[tox] +envlist = py35,py27,docs +skip_missing_interpreters = True + +[testenv] + +commands = + python --version + python budget/tests.py +deps = + -rdev-requirements.txt + -rrequirements.txt + +install_command = pip install --pre {opts} {packages} + +[testenv:docs] +commands = sphinx-build -a -n -b html -d docs/_build/doctrees docs docs/_build/html +deps = + -rdocs/requirements.txt