X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=lib%2FFile%2FCodeowners.pm;h=8ca8393e06fa28272f7de25c0d1ec595ca950055;hb=a27d001901b781e8a4355073b4b4ea1613ce084b;hp=fb3ec552c889bd6431be1ac7dd9d3c0c000f3fa3;hpb=67e86f990f2556f12465052911eb7b96a03b8dcc;p=chaz%2Fgit-codeowners diff --git a/lib/File/Codeowners.pm b/lib/File/Codeowners.pm index fb3ec55..8ca8393 100644 --- a/lib/File/Codeowners.pm +++ b/lib/File/Codeowners.pm @@ -6,7 +6,7 @@ use warnings; use strict; use Encode qw(encode); -use Path::Tiny; +use Path::Tiny 0.089; use Scalar::Util qw(openhandle); use Text::Gitignore qw(build_gitignore_matcher); @@ -355,6 +355,31 @@ sub patterns { return $patterns; } +=method projects + + $projects = $codeowners->projects; + +Get an arrayref of all projects defined. + +=cut + +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; +} + =method update_owners $codeowners->update_owners($pattern => \@new_owners); @@ -497,6 +522,7 @@ sub _clear { delete $self->{match_lines}; delete $self->{owners}; delete $self->{patterns}; + delete $self->{projects}; } 1;