File: | blib/lib/Git/ReleaseRepo/Command.pm |
Coverage: | 91.8% |
line | stmt | bran | cond | sub | pod | time | code |
---|---|---|---|---|---|---|---|
1 | package Git::ReleaseRepo::Command; | ||||||
2 | |||||||
3 | 2 2 2 | 2185 2 31 | use strict; | ||||
4 | 2 2 2 | 4 2 22 | use warnings; | ||||
5 | 2 2 2 | 3010 656483 6 | use Moose; | ||||
6 | 2 2 2 | 7919 2 10 | use App::Cmd::Setup -command; | ||||
7 | 2 2 2 | 217 2 54 | use Cwd qw( getcwd ); | ||||
8 | 2 2 2 | 4 2 49 | use YAML qw( LoadFile DumpFile ); | ||||
9 | 2 2 2 | 4 2 41 | use List::Util qw( first ); | ||||
10 | 2 2 2 | 3009 14879 64 | use File::HomeDir; | ||||
11 | 2 2 2 | 6 0 55 | use File::Spec::Functions qw( catfile catdir ); | ||||
12 | 2 2 2 | 6 1 9 | use Git::Repository qw( +Git::ReleaseRepo::Repository ); | ||||
13 | |||||||
14 | has config_file => ( | ||||||
15 | is => 'ro', | ||||||
16 | isa => 'Str', | ||||||
17 | lazy => 1, | ||||||
18 | default => sub { | ||||||
19 | catfile( $_[0]->repo_dir, '.git', 'release' ); | ||||||
20 | }, | ||||||
21 | ); | ||||||
22 | |||||||
23 | has config => ( | ||||||
24 | is => 'ro', | ||||||
25 | isa => 'HashRef', | ||||||
26 | lazy => 1, | ||||||
27 | default => sub { | ||||||
28 | my ( $self ) = @_; | ||||||
29 | if ( -f $self->config_file ) { | ||||||
30 | return LoadFile( $self->config_file ) || {}; | ||||||
31 | } | ||||||
32 | else { | ||||||
33 | return {}; | ||||||
34 | } | ||||||
35 | }, | ||||||
36 | ); | ||||||
37 | |||||||
38 | sub write_config { | ||||||
39 | 0 | 0 | 0 | my ( $self ) = @_; | |||
40 | 0 | 0 | return DumpFile( $self->config_file, $self->config ); | ||||
41 | } | ||||||
42 | |||||||
43 | has repo_dir => ( | ||||||
44 | is => 'rw', | ||||||
45 | isa => 'Str', | ||||||
46 | lazy => 1, | ||||||
47 | default => sub { getcwd }, | ||||||
48 | ); | ||||||
49 | |||||||
50 | has git => ( | ||||||
51 | is => 'ro', | ||||||
52 | isa => 'Git::Repository', | ||||||
53 | lazy => 1, | ||||||
54 | default => sub { | ||||||
55 | my $repo_dir = $_[0]->repo_dir; | ||||||
56 | my $git = Git::Repository->new( | ||||||
57 | work_tree => $_[0]->repo_dir, | ||||||
58 | git_dir => catdir( $_[0]->repo_dir, '.git' ), | ||||||
59 | ); | ||||||
60 | return $git; | ||||||
61 | }, | ||||||
62 | ); | ||||||
63 | |||||||
64 | has release_prefix => ( | ||||||
65 | is => 'rw', | ||||||
66 | isa => 'Str', | ||||||
67 | lazy => 1, | ||||||
68 | default => sub { | ||||||
69 | return $_[0]->config->{version_prefix}; | ||||||
70 | }, | ||||||
71 | ); | ||||||
72 | |||||||
73 | sub repo_name_from_url { | ||||||
74 | 4 | 0 | 10 | my ( $self, $repo_url ) = @_; | |||
75 | 4 | 43 | my ( $repo_name ) = $repo_url =~ m{/([^/]+)$}; | ||||
76 | 4 | 8 | $repo_name =~ s/[.]git$//; | ||||
77 | 4 | 19 | return $repo_name; | ||||
78 | } | ||||||
79 | |||||||
80 | sub opt_spec { | ||||||
81 | 45 | 1 | 227 | return (); | |||
82 | } | ||||||
83 | |||||||
84 | sub execute { | ||||||
85 | 44 | 1 | 25746 | my ( $self, $opt, $args ) = @_; | |||
86 | |||||||
87 | 44 | 146 | inner(); | ||||
88 | } | ||||||
89 | |||||||
90 | 2 2 2 | 572 2 5 | no Moose; | ||||
91 | __PACKAGE__->meta->make_immutable; | ||||||
92 | 1; |