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

# File Coverage

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

line | stmt | bran | cond | sub | time | code
--- | --- | --- | --- | --- | --- | ---
1 |  |  |  |  |  | package DBIx::SchemaChecksum::App::ShowUpdatePath;
2 | 2 2 2 |  |  | 2 | 3474 4 50 | use 5.010;
3 | 2 2 2 |  |  | 2 | 142 14796 32 | use MooseX::App::Command;
4 |  |  |  |  |  | extends qw(DBIx::SchemaChecksum::App);
5 | 2 2 2 |  |  | 2 | 1038187 5 389 | use Carp qw(croak);
6 |
7 |  |  |  |  |  | option 'from_checksum' => ( is => 'ro', isa => 'Str' );
8 |  |  |  |  |  | option '+sqlsnippetdir' => ( required => 1);
9 |
10 |  |  |  |  |  | sub run {
11 | 1 |  |  | 1 | 1890 | my $self = shift;
12 |
13 | 1 |  | 33 |  | 28 | $self->show_update_path( $self->from_checksum || $self->checksum );
14 |  |  |  |  |  | }
15 |
16 |  |  |  |  |  | sub show_update_path {
17 | 5 |  |  | 5 | 7 | my ($self, $this_checksum) = @_;
18 | 5 |  |  |  | 98 | my $update_path = $self->_update_path;
19 |
20 | 5 | 100 |  |  | 9 | my $update = $update_path->{$this_checksum}
21 |  |  |  |  |  | if ( exists $update_path->{$this_checksum} );
22 |
23 | 5 | 100 |  |  | 7 | unless ($update) {
24 | 1 |  |  |  | 7 | say "No update found that's based on $this_checksum.";
25 | 1 |  |  |  | 12 | exit;
26 |  |  |  |  |  | }
27 |
28 | 4 | 100 |  |  | 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 |
39 |  |  |  |  |  | sub report_file {
40 | 4 |  |  | 4 | 4 | my ($self, $file, $checksum) = @_;
41 | 4 |  |  |  | 92 | say $file->relative($self->sqlsnippetdir) ." ($checksum)";
42 |  |  |  |  |  | }
43 |
44 |  |  |  |  |  | 1;