1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
#!/usr/bin/perl -w
use strict;
use MGA::Git;
#use Data::Dump qw/dd/;
my %actions = (
glconf => {
run => \&glconf,
descr => 'Print gitolite configuration',
usage => <<END,
$0 glconf [repo]
Print the gitolite configuration. Optionaly you can add a repository
name as parameter to display the configuration for this repository only.
END
},
glrun => {
run => \&glrun,
descr => 'Update gitolite configuration',
usage => <<END,
$0 glrun
Update gitolite configuration, and run gitolite if changed.
END
},
usage => {
run => \&usage,
descr => 'Show usage informations for an action',
usage => <<END,
$0 usage [action]
Show action usage
END
},
);
sub usage {
if ($_[1] && $actions{$_[1]}) {
print STDERR $actions{$_[1]}->{usage};
} else {
print STDERR "$0 [action] [options]\n";
print STDERR "$0 usage [action]\n\n";
print STDERR "Available actions:\n";
print STDERR map { " - $_ : $actions{$_}->{descr}\n" } keys %actions;
}
}
sub usageexit {
usage(@_);
exit 1;
}
sub glconf {
usageexit('usage', $_[0]) unless @_ <= 2;
my %r;
MGA::Git::load_gitrepos(\%r);
MGA::Git::load_groups(\%r) if @_ == 1;
MGA::Git::load_users(\%r);
if (my $repo = $_[1]) {
if (!$r{repos}{$repo}) {
print STDERR "Cannot find repository $repo\n";
exit 1;
}
print MGA::Git::gitolite_repo_config(\%r, $repo);
} else {
print MGA::Git::gitolite_config(\%r), "\n";
}
}
sub glrun {
usageexit('usage', $_[0]) unless @_ == 1;
my %r;
MGA::Git::load_gitrepos(\%r);
MGA::Git::load_groups(\%r);
MGA::Git::load_users(\%r);
MGA::Git::dumpdb(\%r);
MGA::Git::update_gitolite_keydir(\%r);
MGA::Git::update_gitolite_config(\%r);
MGA::Git::run_gitolite(\%r);
}
if (@ARGV == 0 || !$actions{$ARGV[0]}) {
usageexit();
}
$actions{$ARGV[0]}->{run}->(@ARGV);
|