File-Codeowners
view release on metacpan or search on metacpan
lib/File/Codeowners.pm view on Meta::CPAN
my $owners = [sort keys %owners];
$self->{owners} = $owners if !$pattern;
return $owners;
}
sub patterns {
my $self = shift;
my $owner = shift;
return $self->{patterns} if !$owner && $self->{patterns};
my %patterns;
for my $line (@{$self->_lines}) {
next if $owner && !grep { $_ eq $owner } @{$line->{owners} || []};
my $pattern = $line->{pattern};
$patterns{$pattern}++ if $pattern;
}
my $patterns = [sort keys %patterns];
$self->{patterns} = $patterns if !$owner;
return $patterns;
}
sub aliases {
my $self = shift;
return $self->{aliases} if $self->{aliases};
my %aliases;
for my $line (@{$self->_lines}) {
next if !defined $line->{alias};
$aliases{$line->{alias}} = [@{$line->{owners}}];
}
return $self->{aliases} = \%aliases;
}
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;
my $owners = shift;
$pattern && $owners or _usage(q{$codeowners->update_owners($pattern => \@owners)});
$owners = [$owners] if ref($owners) ne 'ARRAY';
$self->_clear;
my $count = 0;
for my $line (@{$self->_lines}) {
next if !$line->{pattern};
next if $pattern ne $line->{pattern};
$line->{owners} = [@$owners];
++$count;
}
return $count;
}
sub update_owners_by_project {
my $self = shift;
my $project = shift;
my $owners = shift;
$project && $owners or _usage(q{$codeowners->update_owners_by_project($project => \@owners)});
$owners = [$owners] if ref($owners) ne 'ARRAY';
$self->_clear;
my $count = 0;
for my $line (@{$self->_lines}) {
next if !$line->{project} || !$line->{owners};
next if $project ne $line->{project};
$line->{owners} = [@$owners];
++$count;
}
return $count;
}
sub rename_owner {
my $self = shift;
my $old_owner = shift;
my $new_owner = shift;
$old_owner && $new_owner or _usage(q{$codeowners->rename_owner($owner => $new_owner)});
$self->_clear;
my $count = 0;
for my $line (@{$self->_lines}) {
next if !exists $line->{owners};
for (my $i = 0; $i < @{$line->{owners}}; ++$i) {
next if $line->{owners}[$i] ne $old_owner;
$line->{owners}[$i] = $new_owner;
++$count;
}
}
return $count;
}
sub rename_project {
my $self = shift;
my $old_project = shift;
my $new_project = shift;
$old_project && $new_project or _usage(q{$codeowners->rename_project($project => $new_project)});
$self->_clear;
my $count = 0;
for my $line (@{$self->_lines}) {
next if !exists $line->{project} || $old_project ne $line->{project};
$line->{project} = $new_project;
$line->{comment} = " Project: $new_project" if exists $line->{comment};
++$count;
( run in 1.814 second using v1.01-cache-2.11-cpan-df04353d9ac )