#!/bin/bash
# ---------------------------------------------------------------------------- #
## \file bookmarks.sh
## \author Sebastien Beaugrand
## \sa http://beaugrand.chez.com/
## \copyright CeCILL 2.1 Free Software license
# ---------------------------------------------------------------------------- #
if [ "$1" = "-lite" ]; then
    sed 's/ICON="[^"]*"//' bookmarks.html >bookmarks-lite.html &&\
    tar czf bookmarks-lite.tgz bookmarks-lite.html
    exit $?
fi

if [ -n "$1" ]; then
    ti=$1
else
    echo "Usage: `basename $0` [-lite] [directory]"
    exit 1
fi
if [ -f places.sqlite ]; then
    sqlite="sqlite3 places.sqlite"
else
    sqlite="sqlite3 `ls ~/.mozilla/firefox/*/places.sqlite`"
fi

# ---------------------------------------------------------------------------- #
# dossier
# ---------------------------------------------------------------------------- #
dossier()
{
    local fk
    local i
    id=$1
    ti=`$sqlite "SELECT title FROM moz_bookmarks WHERE id=$id"`
    for ((j = 0; j < lv; ++j)); do
        echo -n " "
    done
    echo "<DT><H3>$ti</H3><DL>"
    lv=$(($lv+2))
    fk=`$sqlite "SELECT fk FROM moz_bookmarks WHERE parent=$1 AND type=1"`
    for i in $fk; do
        for ((j = 0; j < lv; ++j)); do
            echo -n " "
        done
        echo -n "<TD><A HREF=\""
        $sqlite "SELECT url FROM moz_places WHERE id=$i" | tr -d '\n'
        echo "\">"
        for ((j = 0; j < lv; ++j)); do
            echo -n " "
        done
        $sqlite "SELECT title FROM moz_bookmarks WHERE fk=$i" | tr -d '\n'
        echo "</A><BR/></TD>"
    done
    fk=`$sqlite "SELECT id FROM moz_bookmarks WHERE parent=$1 AND type=2"`
    for i in $fk; do
        dossier $i
    done
    lv=$(($lv-2))
    for ((j = 0; j < lv; ++j)); do
        echo -n " "
    done
    echo "</DL></DT><BR/>"
}

# ---------------------------------------------------------------------------- #
# main
# ---------------------------------------------------------------------------- #
lv=0
id=`$sqlite "SELECT id FROM moz_bookmarks WHERE title=\"$ti\""`
if [ -z "$id" ]; then
    exit 1
fi
echo '<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">'
echo "<DL>"
dossier $id
echo "</DL>"