# vim: syn=perl:

# "sugar script" (syntactic sugar helper) for gitolite3

# Enabling this script in the rc file allows you to use subdirectories in
# keydir as group names.  The last component other than keydir itself will be
# taken as the group name.

sub sugar_script {
    Gitolite::Common::trace( 2, "running 'keysubdirs-as-groups' sugar script..." );
    my $lines = shift;

    my @out = @{$lines};
    unshift @out, groupnames();

    return \@out;
}

sub groupnames {
    my @out     = ();
    my %members = ();
    for my $pk (`find ../keydir/ -name "*.pub"`) {
        next unless $pk =~ m(.*/([^/]+)/([^/]+?)(?:@[^./]+)?\.pub$);
        next if $1 eq 'keydir';
        $members{$1} .= " $2";
    }
    for my $m ( sort keys %members ) {
        push @out, "\@$m =" . $members{$m};
    }

    return @out;
}
