#!/usr/bin/env bash
# A sketch, I would probably use this for nothing, lol
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" ;
    for index in "${!lines[@]}" ; do
        line=${lines[$index]}
        read url id <<< $line ;
        read title < "$HOME/.andpile/data/$id.txt" ;
        printf "%s: %s\n" "$index" "$title" ;
    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
