File Coverage

File:lib/App/TimeTracker/Command/Git.pm
Coverage:60.9%

linestmtbrancondsubpodtimecode
1package App::TimeTracker::Command::Git;
2
2
2
2
1321
6
40
use strict;
3
2
2
2
9
6
54
use warnings;
4
2
2
2
2
2
2
80
92
26
32
5
22
use 5.010;
5
6# ABSTRACT: TimeTracker Git plugin
7
8
2
2
2
9
4
19
use Moose::Role;
9
2
2
2
6547
11094
16
use Git::Repository;
10
11has 'branch' => (is=>'rw',isa=>'Str');
12has 'merge' => (is=>'ro',isa=>'Bool');
13has 'nobranch' => (is=>'ro',isa=>'Bool');
14
15after 'cmd_start' => sub {
16    my $self = shift;
17
18    return unless $self->branch;
19    return if $self->nobranch;
20
21    my $r = Git::Repository->new( work_tree => '.' );
22    my $branch = $self->branch;
23    my %branches = map { s/^\s+//; $_=>1 } $r->run('branch');
24
25    if ($branches{'* '.$branch}) {
26        say "Already on branch $branch";
27        return;
28    }
29
30    if (!$branches{$branch}) {
31        $r->command('branch',$branch);
32    }
33
34    print $r->command('checkout',$branch)->stderr->getlines;
35};
36
37after cmd_stop => sub {
38    my $self = shift;
39    return unless $self->merge;
40
41    my $r = Git::Repository->new( work_tree => '.' );
42    my $branch = $self->branch;
43    my %branches = map { s/^\s+//; $_=>1 } $r->run('branch');
44
45    unless ($branches{'* '.$branch}) {
46        say "Not in branch $branch, won't merge.";
47        return;
48    }
49    my $tags = join(', ',map { $_->name } @{$self->tags}) || '';
50    $r->command('checkout','master');
51    $r->command("merge",$branch,"--no-ff",'-m',"implemented $branch $tags");
52};
53
54sub cmd_merge {
55
0
0
    my $self = shift;
56
57
0
    my $r = Git::Repository->new( work_tree => '.' );
58
0
    my $branch = $self->branch;
59
0
0
0
    my %branches = map { s/^\s+//; $_=>1 } $r->run('branch');
60
61
0
    unless ($branches{'* '.$branch}) {
62
0
        say "Not in branch $branch, won't merge.";
63
0
        return;
64    }
65
0
    my $tags = join(', ',map { $_->name } @{$self->tags}) || '';
66
0
    $r->command('checkout','master');
67
0
    $r->command("merge",$branch,"--no-ff",'-m',"implemented $branch $tags");
68
69}
70
71
2
2
2
1617
6
28
no Moose::Role;
721;
73