#!/usr/bin/env bash

if [[ ! -d "$HOME/.andpile" ]]; then
    mkdir "$HOME/.andpile" ;
    mkdir "$HOME/.andpile/data" ;
    touch "$HOME/.andpile/feeds.txt" ;
fi

remove_feed() {
    sed -i.back "$(($1 + 1))d" "$HOME/.andpile/feeds.txt" ;
}

add_feed () {
    if grep -q "^$1" "$HOME/.andpile/feeds.txt" ; then
       echo "Already subscribed to feed" ;
    else
        id="$(uuidgen)" ;
        echo "Subscribing to feed..." ;
        echo "$1 $id" >> "$HOME/.andpile/feeds.txt" ;
        echo "Downloading listing..."
        curl "$1" >> "$HOME/.andpile/data/$id.txt" ;
    fi
}


feeds () {
    readarray -t lines < "$HOME/.andpile/feeds.txt" ;
    echo "";
    for index in "${!lines[@]}" ; do
        line=${lines[$index]}
        read feed_url id <<< $line ;
        readarray -t contents < "$HOME/.andpile/data/$id.txt" ;
        echo "$index: ${contents[0]} (${contents[1]})" ;
        i=2 ;
        while [ -n "${contents[$i]}" ]; do
            echo "    ${contents[$i]}"
            ((i++))
        done
        echo "";
    done
}

list_feed () {
    readarray -t lines < "$HOME/.andpile/feeds.txt" ;
    read url id <<< ${lines[$1]} ;
    if [[ -f "$HOME/.andpile/data/$id.txt" ]]; then
        curl "$url" > "$HOME/.andpile/data/$id.txt" ;
        cat "$HOME/.andpile/data/$id.txt" | more ;
    fi
}

case "$1" in
    add-feed) add_feed "$2" ;;
    remove-feed) remove_feed "$2" ;;
    feeds) feeds ;;
    list) list_feed "$2" ;;
esac
