#!/usr/bin/perl -w # Copyright (C) 2014 Stefano Zacchiroli # License: GNU General Public License (GPL), version 3 or above # parse current "git diff" and determine ledger account renames use strict; use Carp::Assert; open(GIT, "git diff |"); my @del_accts = (); my @add_accts = (); while (my $line = ) { if ($line =~ /^-account\s+(.*)$/) { push @del_accts, $1; } elsif ($line =~ /^\+account\s+(.*)$/) { push @add_accts, $1; } elsif (@del_accts) { assert($#del_accts == $#add_accts, "even number of added/removed accounts"); for (my $i = 0 ; $i <= $#del_accts ; $i++) { print $del_accts[$i], "\t->\t", $add_accts[$i], "\n"; } @del_accts = (); @add_accts = (); } } close(GIT);