]> Dogcows Code - chaz/git-codeowners/blobdiff - lib/File/Codeowners.pm
require Path::Tiny 0.089 (for spewing arrayrefs)
[chaz/git-codeowners] / lib / File / Codeowners.pm
index fb3ec552c889bd6431be1ac7dd9d3c0c000f3fa3..8ca8393e06fa28272f7de25c0d1ec595ca950055 100644 (file)
@@ -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;
This page took 0.02113 seconds and 4 git commands to generate.