====================================
Gestion des adhésions de Nos oignons
====================================

Voici une collection de scripts et de bouts de code qui permettent de gérer les
adhésions de Nos oignons conformément aux statuts de l'association.

Base des membres
================

La base des membres est pensée pour être stockés dans le wiki du conseil
d'administration. Elle est formée sous forme d'une série de pages, une par
membre.

Cela donne l'aboresence suivante :

    Membres
    ├── 000000.mdwn
    ├── 000001.mdwn
    ├── 000002.mdwn
    ├── 000003.mdwn
    ├── 000004.mdwn
    …
    └── 000042.mdwn

Chaque page doit ressembler à :

    ---
    name: Violette Dupuis
    address: |
      42 rue du Fleuve
      12042 Essaiville
    email: violette@example.org
    membership_fee_paid_on: 2013-05-25
    ---

    Violette sait programmer en Ruby, on peut lui demander si on a besoin de
    coup de main.

Le début de chaque page est un morceau de [YAML]. Il doit contenir les entrées
suivantes :

=`name`=
    Le nom (complet) du membre.
=`address`=
    L'adresse postale du membre.
=`email`=
    L'adresse email du membre. C'est à cette adresse que seront envoyés les
    messages de l'assemblée générale et les rappels de cotisation.
=`membership_fee_paid_on`=
    Date du paiement de la dernière cotisation.

Le reste de la page peut servir à noter ce qu'on veut.

[YAML]: http://yaml.org/

Scripts
=======

Voici le détail des scripts utilisés. On peut se faire une idée de leurs
fonctionalités respectives en lisant les cas d'utilisation dans les fichiers
`features/*.feature`.

`list-email`
------------

Affiche sur la sortie standard les adresses emails des membres à jour de
cotisation.

`pre-commit-hook`
-----------------

`pre-commit` hook pour Git. Ce dernier est avant tout là pour éviter de pouvoir
enregistrer des informations invalides dans la base des membres depuis Ikiwiki.
Il est nécessaire de le configurer à chaque fois qu'on clone le dépôt du wiki du
C.A. (en faisant un lien symbolique dans `.git/hooks/pre-commit`).

`pre-receive-hook`
------------------

`pre-commit` hook pour Git. Ce dernier est là pour éviter de pouvoir enregistrer
des informations invalides dans la base des membres. Il doit être configuré dans
le dépôt central du wiki du C.A. (via un lien symbolique dans
`.git/hooks/pre-receive`).

update-ag-subscribers
---------------------

Met à jour la liste des emails inscrites à la liste ag@ par rapport aux membres
à jour de cotisation. À exécuter à travers un *cron*. A besoin de pouvoir
lancer les commandes `list_members`, `add_members` et `remove_members` via
`sudo` sur le compte `list`.

Développement
=============

L'essentiel du code est en Ruby. Les dépendences sont gérés avec Bundler. Les
tests d'intégrations sont fait avec Cucumber.

Installer les paquets Debian qui vont bien (sur Wheezy) :

    apt-get install ruby1.9.1 bundler

Pour récupérer les dépendences :

    ruby1.9.1 /usr/bin/bundle install --path=vendor/bundle

Déploiement
===========

Installer les paquets Debian qui vont bien (sur Wheezy) :

    apt-get install ruby1.9.1 bundler

Installer les dépendences :

    ruby1.9.1 /usr/bin/bundle install --deployment \
                                      --without=development \
                                      --path=vendor/bundle

Il faut ensuite mettre en place le lien symbolique vers le script
`pre-receive-hooks`. XXX: à détailler

XXX: configuration sudoers
XXX: crontab pour update-ag-subscribers
