.. contents::

====
gabi
====

gabi stands for Google Address Book Importer but it can also means Google Address Book Immediately or Google Address Book for paranoid Idiots

Usage
=====

gabi's algorithm is quite simple:

1. Download contacts from Google Contacts
2. Save them into a file in json format
3. Perform a query
4. Output the query results

Step 1 is smart enough to only download those contacts that have changed since the last invocation.

For step 3 you should pass some query args to the command line. The query is performed as the OR of all query args. A query arg can be a simple string or a string with a ':' character. If a single string is used that text is matched in every attribute of a contact except for the id. If a ':' is found in the query arg, it is used to split the attribute name and the value to match. In this case only that attribute will be searched.

Right now only step 4 is flexible enough to allow the user to choose from different output formats. Supported formats include simple, json and mutt. In the future other steps are expected to be more configurable.

Mutt integration
================

Just edit your .muttrc file and add a line like this::

  set query_command = "/usr/bin/gabi --user=your_google_email --password=your_password --store=/home/user/contacts.json --output-type=mutt '%s'"

Now you will be able to search your Google Contacts from Mutt.

Future plans
============

* remove deleted contacts from Google Contacts in the store file.
* add a store backend for mongo db
* if no query args are given output all contacts
* GNOME keychain integration
