#!/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);
}