#!/usr/bin/env bash # List git files as an indented tree (because the other tools suck). set -e usage() { cat <&2 echo "Error: unknown option $1" exit 1 fi ;; esac done #if [[ $HELP = 1 || ${#ARGS} -eq 0 ]]; then usage; exit; fi if [[ $HELP = 1 ]]; then usage; exit; fi REGEX="${ARGS[0]:-.}" ROOT=$(pwd) # list git-tracked files # keep only the paths matching REGEX, if provided # convert paths list to an indented tree # keep only the directories, if -d provided git ls-files \ | grep -iE "$REGEX" \ | sed -e 's%/%/:%g' -e "s%^%account $ROOT/:%" | hledger -f- accounts -t \ | grep -E "$(if [[ $D = 1 ]]; then echo '/$'; else echo '.'; fi)"