31 lines
579 B
Plaintext
31 lines
579 B
Plaintext
|
#!/bin/sh
|
||
|
|
||
|
ledger="${1:-$LEDGER_FILE}"
|
||
|
|
||
|
selection="$(sed -n 's/....-..-..\( [*!]\)\? //p' "$ledger" | sort | uniq | fzf)"
|
||
|
[ -z "$selection" ] && clear && exit 0 # quit if escaped
|
||
|
|
||
|
cat <<HERE | ed --silent "$ledger"
|
||
|
# append a newline for easier searching
|
||
|
\$a
|
||
|
|
||
|
.
|
||
|
# yank matching transaction (closed by empty line)
|
||
|
?^....-..-..\( [*!]\)\? ${selection}\$?;/^\$/y
|
||
|
# select line below last none-empty line
|
||
|
$
|
||
|
?^..*?
|
||
|
+
|
||
|
# put transaction
|
||
|
x
|
||
|
# replace date with today
|
||
|
?^\$?
|
||
|
+s/....-..-../$(date +'%Y-%m-%d')/
|
||
|
# delete empty lines at end and quit
|
||
|
/^\$/,\$d
|
||
|
wq
|
||
|
HERE
|
||
|
|
||
|
vis +\$ "$ledger"
|
||
|
clear
|