"memberships()" can now deal with most everything except roles

This commit is contained in:
Sitaram Chamarty 2012-03-16 21:39:26 +05:30
parent f21d17e086
commit a014d2ffd5

View file

@ -111,7 +111,7 @@ sub git_config {
# if it has an entry in %configs # if it has an entry in %configs
grep { $configs{$_} } grep { $configs{$_} }
# for each "repo" that represents us # for each "repo" that represents us
memberships($repo); memberships('repo', $repo);
# %configs looks like this (for each 'foo' that is in memberships()) # %configs looks like this (for each 'foo' that is in memberships())
# 'foo' => [ [ 6, 'foo.bar', 'repo' ], [ 7, 'foodbar', 'repoD' ], [ 8, 'foo.czar', 'jule' ] ], # 'foo' => [ [ 6, 'foo.bar', 'repo' ], [ 7, 'foodbar', 'repoD' ], [ 8, 'foo.czar', 'jule' ] ],
@ -193,8 +193,8 @@ sub load_1 {
my @rules = (); my @rules = ();
my @repos = memberships($repo); my @repos = memberships('repo', $repo);
my @users = memberships($user); my @users = memberships('user', $user);
trace( 3, "memberships: " . scalar(@repos) . " repos and " . scalar(@users) . " users found" ); trace( 3, "memberships: " . scalar(@repos) . " repos and " . scalar(@users) . " users found" );
for my $r (@repos) { for my $r (@repos) {
@ -224,11 +224,36 @@ sub load_1 {
} }
sub memberships { sub memberships {
my $type = shift;
my $item = shift; my $item = shift;
my $item2 = '';
my @ret = ( $item, '@all' ); my @ret = ( $item, '@all' );
push @ret, @{ $groups{$item} } if $groups{$item};
if ($type eq 'repo') {
my $f = "$rc{GL_REPO_BASE}/$item.git/gl-creator";
if (-f $f) {
my $creator;
chomp($creator = slurp($f));
($item2 = $item) =~ s(/$creator/)(/CREATOR/);
$item2 = '' if $item2 eq $item; # no change
}
for my $i (keys %repos) {
if ($item eq $i or $item =~ /^$i$/ or $item2 and ( $item2 eq $i or $item2 =~ /^$i$/ )) {
push @ret, $i;
}
}
}
for my $i (keys %groups) {
if ($item eq $i or $item =~ /^$i$/ or $item2 and ( $item2 eq $i or $item2 =~ /^$i$/ )) {
push @ret, @{ $groups{$i} };
}
}
@ret = @{ sort_u(\@ret) };
dbg(\@ret);
return @ret; return @ret;
} }
@ -324,7 +349,7 @@ sub list_memberships {
my $name = shift; my $name = shift;
load_common(); load_common();
my @m = memberships($name); my @m = memberships('', $name);
return ( sort_u( \@m ) ); return ( sort_u( \@m ) );
} }