#!/usr/bin/env bash function fz { readarray -t lines < <(fzf --height 50% --reverse --expect alt-enter --print-query "$@") query=${lines[0]} enter=${lines[1]} match=${lines[2]} if [[ "$enter" == "alt-enter" ]] then echo "$query" else echo "$match" fi } date=$(for n in $(seq 0 14); do date -d"$n days ago" "+%Y/%m/%d (%a)"; done | fz | awk '{ print $1 }') echo "date: $date" payee=$(hledger payees | fz --prompt="payee: ") echo "payee: $payee" # TODO: handle more than just 2 accounts to_account=$(cat <(hledger accounts payee:"$payee") <(hledger accounts) | fz --prompt="to account: ") echo "to account: $to_account" read -rep "to amount: " to_amount from_account=$(cat <(hledger accounts payee:"$payee") <(hledger accounts) | fz --prompt="from account: ") echo "from account: $from_account" read -rep "from amount: " -i "-$to_amount" from_amount read -r -d '' TX <> "$tmp" cat "$tmp" read -rep "all good? Y/e/n " ok case $ok in n) exit 1 ;; e) vim "$tmp" && cat "$tmp" >> ~/org/fund/ledger.journal ;; *) cat "$tmp" >> ~/org/fund/ledger.journal ;; esac