X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=lib%2FFile%2FCodeowners.pm;fp=lib%2FFile%2FCodeowners.pm;h=e7b23deebded4c7e6bbe5a8e98f0624db98d837f;hb=3a345750fddc777385eacb334ea011f9327b774e;hp=f987561554bfdbe464169a490c2964ec1aa759ec;hpb=0047d0a57e8ffe0d7cfde415fa6f50dae30201d1;p=chaz%2Fgit-codeowners diff --git a/lib/File/Codeowners.pm b/lib/File/Codeowners.pm index f987561..e7b23de 100644 --- a/lib/File/Codeowners.pm +++ b/lib/File/Codeowners.pm @@ -10,7 +10,7 @@ use Path::Tiny; use Scalar::Util qw(openhandle); use Text::Gitignore qw(build_gitignore_matcher); -our $VERSION = '0.41'; # VERSION +our $VERSION = '0.42'; # VERSION sub _croak { require Carp; Carp::croak(@_); } sub _usage { _croak("Usage: @_\n") } @@ -250,6 +250,24 @@ sub patterns { } +sub projects { + my $self = shift; + + return $self->{projects} if $self->{projects}; + + my %projects; + for my $line (@{$self->_lines}) { + my $project = $line->{project}; + $projects{$project}++ if $project; + } + + my $projects = [sort keys %projects]; + $self->{projects} = $projects; + + return $projects; +} + + sub update_owners { my $self = shift; my $pattern = shift; @@ -319,6 +337,7 @@ sub _clear { delete $self->{match_lines}; delete $self->{owners}; delete $self->{patterns}; + delete $self->{projects}; } 1; @@ -335,7 +354,7 @@ File::Codeowners - Read and write CODEOWNERS files =head1 VERSION -version 0.41 +version 0.42 =head1 METHODS @@ -432,6 +451,12 @@ defined in the file. Get an arrayref of all patterns defined. +=head2 projects + + $projects = $codeowners->projects; + +Get an arrayref of all projects defined. + =head2 update_owners $codeowners->update_owners($pattern => \@new_owners);