The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/env perl

use strict;
use warnings;
use 5.010;

use File::Find::Rule;
use Data::Dumper;
use App::TimeTracker::Data::Task;
use App::TimeTracker::Proto;
use DateTime;
use Path::Class;
use Try::Tiny;
use JSON::XS;
use Path::Class;

$|=1;
my $app = App::TimeTracker::Proto->new;
my @files = File::Find::Rule->file()->name(qr/\.trc$/)
    ->in( $app->home );

foreach my $old (@files) {
    print '.';
    my $json_old = Path::Class::File->new($old)->slurp;
    my $hash = decode_json($json_old);
    if ($hash->{project} && ref($hash->{project}) eq 'HASH') {
        my $p = delete $hash->{project};
        $hash->{project}=$p->{name};
    }
    my $tags = $hash->{tags};
    if (ref($tags) eq 'ARRAY' && @$tags) {
        my @new_tags;
        foreach my $t (@$tags) {
            if (ref($t) eq 'HASH') {
                push(@new_tags,$t->{name});
            }
            else {
                push(@new_tags,$t);
            }
        }
        $hash->{tags}=\@new_tags;
    }

    open(my $out,">",$old);
    print $out encode_json($hash);
}