#!/bin/ksh
. $HOME/.bin/_config

_rdir=$1

list() {
    _dir="$1"
    _sel="$(ssh $USER@$DOMAIN "cd \"$_dir\" && ( printf 'GO BACK\nNEW FILE\n'; ls -lt .; )" \
           | egrep -v ^total | fzf)"

    [ $? -ne 0 ] && exit;

    case "$_sel" in
        "NEW FILE") newfile "$_dir" ;;
        "GO BACK") list "$_dir/.." ;;
        *) dofile "$_dir" "$_sel" ;;
    esac
    list "$_dir"
}

dofile() {
    _dir="$1"
    _sel="$2"
    _do="$(printf 'EDIT\nDELETE\nDOWNLOAD\n' | fzf)";
    [ $? -ne 0 ] && exit;

    _entry=$(printf '%s' "$_sel" | tr -s ' ' | cut -d" " -f9-)

    if printf '%s' "$_sel" | egrep ^d;
    then
        list "$_dir/$_entry"
    else
        case "$_do" in
            "EDIT") vim "sftp://$USER@$DOMAIN/$_dir/$_entry" ;;
            "DELETE") ssh $USER@$DOMAIN "rm /$_dir/$_entry" ;;
            "DOWNLOAD") scp "$USER@$DOMAIN:/$_dir/$_entry" . ;;
            "GO BACK") list "$_dir" ;;
        esac
    fi
}

newfile() {
    _dir="$1"
    printf 'Filename (%s)? ' "$(date +%Y-%m-%d-)"
    read name;
    vim "sftp://$USER@$DOMAIN/$_dir/$name"
}

list "${_rdir:=$RPATH}"