aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--.travis.yml14
-rw-r--r--CHANGELOG.rst2
-rw-r--r--Makefile39
-rw-r--r--Procfile1
-rw-r--r--README.rst62
-rw-r--r--budget/run.py4
-rw-r--r--dev-requirements.txt2
-rw-r--r--docs/requirements.txt3
-rw-r--r--fabfile.py13
-rw-r--r--requirements.txt (renamed from budget/requirements.txt)0
-rw-r--r--tox.ini19
12 files changed, 102 insertions, 61 deletions
diff --git a/.gitignore b/.gitignore
index 35e8b93..cb78e40 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 8ab4eba..8536228 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 a3c05f0..a8a8083 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 0000000..1ac7e19
--- /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 d147525..0000000
--- a/Procfile
+++ /dev/null
@@ -1 +0,0 @@
-web: python budget/run.py
diff --git a/README.rst b/README.rst
index 30fd094..5b7bb4d 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 <https://ihatemoney.readthedocs.io/en/latest/api.html>`_ to know more.
@@ -68,22 +59,22 @@ documentation <https://ihatemoney.readthedocs.io/en/latest/api.html>`_ 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.
-
-The `fullrelease` command comes from `zest.releaser
-<https://pypi.python.org/pypi/zest.releaser>`_.
-
-Install `zest.releaser`:
-
-.. code-block:: bash
-
- $ pip install "zest.releaser"
+In order to prepare a new release, we are following the following steps:
-- 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 f006ae9..9745b60 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 0000000..0bbb0aa
--- /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 0000000..8982892
--- /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 7e71739..0000000
--- 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
index c4776f0..c4776f0 100644
--- a/budget/requirements.txt
+++ b/requirements.txt
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 0000000..8fc8cbb
--- /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