File Coverage

File:lib/DBIx/SchemaChecksum/App/ShowUpdatePath.pm
Coverage:95.0%

linestmtbrancondsubtimecode
1package DBIx::SchemaChecksum::App::ShowUpdatePath;
2
2
2
2
3474
4
50
use 5.010;
3
2
2
2
142
14796
32
use MooseX::App::Command;
4extends qw(DBIx::SchemaChecksum::App);
5
2
2
2
1038187
5
389
use Carp qw(croak);
6
7option 'from_checksum' => ( is => 'ro', isa => 'Str' );
8option '+sqlsnippetdir' => ( required => 1);
9
10sub run {
11
1
1890
    my $self = shift;
12
13
1
28
    $self->show_update_path( $self->from_checksum || $self->checksum );
14}
15
16sub show_update_path {
17
5
7
    my ($self, $this_checksum) = @_;
18
5
98
    my $update_path = $self->_update_path;
19
20
5
9
    my $update = $update_path->{$this_checksum}
21        if ( exists $update_path->{$this_checksum} );
22
23
5
7
    unless ($update) {
24
1
7
        say "No update found that's based on $this_checksum.";
25
1
12
        exit;
26    }
27
28
4
23
    if ( $update->[0] eq 'SAME_CHECKSUM' ) {
29
2
5
        my ( $file, $post_checksum ) = splice( @$update, 1, 2 );
30
2
3
        $self->report_file($file, $post_checksum);
31
2
429
        $self->show_update_path($post_checksum);
32    }
33    else {
34
2
144
        $self->report_file($update->[0],$update->[1]);
35
2
456
        $self->show_update_path($update->[1]);
36    }
37}
38
39sub report_file {
40
4
4
    my ($self, $file, $checksum) = @_;
41
4
92
    say $file->relative($self->sqlsnippetdir) ." ($checksum)";
42}
43
441;