-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathreorder-journal.sh
executable file
·37 lines (28 loc) · 976 Bytes
/
reorder-journal.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash
if ! [ -x "$(command -v hledger)" ]; then
echo 'Error: hledger is not installed.' >&2
exit 1
fi
SEPARATOR=";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
LEDGER_FILE="$1"
if [[ -z "$LEDGER_FILE" ]]; then
echo "Please specify the ledger file in the first argument. ./reorder-journal.sh hledger.journal"
exit 1
fi
TMPFILE_SORTED=$(mktemp /tmp/hledger.XXXXXX)
TMPFILE_SKELETON=$(mktemp /tmp/hledger.XXXXXX)
if ! hledger print -f "$LEDGER_FILE" > "$TMPFILE_SORTED";
then
rm "$TMPFILE_SORTED" "$TMPFILE_SKELETON"
echo "The ledger file is not valid. Run 'hledger print' to see the cause of the error."
exit 1
fi
if [[ 1 -ne $(fgrep "$SEPARATOR" "$LEDGER_FILE" | wc -l) ]];
then
echo "The expected separator '$SEPARATOR' is missing or appears more than once."
exit 1
fi
sed '/'$SEPARATOR'/q' "$LEDGER_FILE" > "$TMPFILE_SKELETON"
echo "" >> "$TMPFILE_SKELETON"
cat "$TMPFILE_SKELETON" "$TMPFILE_SORTED" > "$LEDGER_FILE"
rm "$TMPFILE_SORTED" "$TMPFILE_SKELETON"