compile: death should be a little louder and clearer :)
This commit is contained in:
parent
8aecaa2da2
commit
31fd24a76c
|
@ -55,7 +55,8 @@ our ($GL_ADMINDIR, $GL_CONF, $GL_KEYDIR, $GL_CONF_COMPILED, $REPO_BASE, $REPO_UM
|
||||||
# now that this thing *may* be run via "push to admin", any errors have to
|
# now that this thing *may* be run via "push to admin", any errors have to
|
||||||
# grab the admin's ATTENTION so he won't miss them among the other messages a
|
# grab the admin's ATTENTION so he won't miss them among the other messages a
|
||||||
# typical push generates
|
# typical push generates
|
||||||
my $ATTN = "\n\t\t***** ERROR *****\n ";
|
my $ABRT = "\n\t\t***** ABORTING *****\n ";
|
||||||
|
my $WARN = "\n\t\t***** WARNING *****\n ";
|
||||||
|
|
||||||
# the common setup module is in the same directory as this running program is
|
# the common setup module is in the same directory as this running program is
|
||||||
my $bindir = $0;
|
my $bindir = $0;
|
||||||
|
@ -64,7 +65,7 @@ require "$bindir/gitolite.pm";
|
||||||
|
|
||||||
# ask where the rc file is, get it, and "do" it
|
# ask where the rc file is, get it, and "do" it
|
||||||
&where_is_rc();
|
&where_is_rc();
|
||||||
die "parse $ENV{GL_RC} failed: " . ($! or $@) unless do $ENV{GL_RC};
|
die "$ABRT parse $ENV{GL_RC} failed: " . ($! or $@) unless do $ENV{GL_RC};
|
||||||
|
|
||||||
# add a custom path for git binaries, if specified
|
# add a custom path for git binaries, if specified
|
||||||
$ENV{PATH} .= ":$GIT_PATH" if $GIT_PATH;
|
$ENV{PATH} .= ":$GIT_PATH" if $GIT_PATH;
|
||||||
|
@ -113,11 +114,11 @@ umask($REPO_UMASK);
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
sub wrap_chdir {
|
sub wrap_chdir {
|
||||||
chdir($_[0]) or die "$ATTN chdir $_[0] failed: $! at ", (caller)[1], " line ", (caller)[2], "\n";
|
chdir($_[0]) or die "$ABRT chdir $_[0] failed: $! at ", (caller)[1], " line ", (caller)[2], "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
sub wrap_open {
|
sub wrap_open {
|
||||||
open (my $fh, $_[0], $_[1]) or die "$ATTN open $_[1] failed: $! at ", (caller)[1], " line ", (caller)[2], "\n" .
|
open (my $fh, $_[0], $_[1]) or die "$ABRT open $_[1] failed: $! at ", (caller)[1], " line ", (caller)[2], "\n" .
|
||||||
( $_[2] || '' ); # suffix custom error message if given
|
( $_[2] || '' ); # suffix custom error message if given
|
||||||
return $fh;
|
return $fh;
|
||||||
}
|
}
|
||||||
|
@ -131,10 +132,10 @@ sub expand_list
|
||||||
{
|
{
|
||||||
# we test with the slightly more relaxed pattern here; we'll catch the
|
# we test with the slightly more relaxed pattern here; we'll catch the
|
||||||
# "/" in user name thing later; it doesn't affect security anyway
|
# "/" in user name thing later; it doesn't affect security anyway
|
||||||
die "$ATTN bad user or repo name $item\n" unless $item =~ $REPONAME_PATT;
|
die "$ABRT bad user or repo name $item\n" unless $item =~ $REPONAME_PATT;
|
||||||
if ($item =~ /^@/) # nested group
|
if ($item =~ /^@/) # nested group
|
||||||
{
|
{
|
||||||
die "$ATTN undefined group $item\n" unless $groups{$item};
|
die "$ABRT undefined group $item\n" unless $groups{$item};
|
||||||
# add those names to the list
|
# add those names to the list
|
||||||
push @new_list, sort keys %{ $groups{$item} };
|
push @new_list, sort keys %{ $groups{$item} };
|
||||||
}
|
}
|
||||||
|
@ -185,7 +186,7 @@ sub parse_conf_file
|
||||||
# the group was *first* created by using $fragment as the *value*
|
# the group was *first* created by using $fragment as the *value*
|
||||||
do { $groups{$1}{$_} ||= $fragment } for ( expand_list( split(' ', $2) ) );
|
do { $groups{$1}{$_} ||= $fragment } for ( expand_list( split(' ', $2) ) );
|
||||||
# again, we take the more "relaxed" pattern
|
# again, we take the more "relaxed" pattern
|
||||||
die "$ATTN bad group $1\n" unless $1 =~ $REPONAME_PATT;
|
die "$ABRT bad group $1\n" unless $1 =~ $REPONAME_PATT;
|
||||||
}
|
}
|
||||||
# repo(s)
|
# repo(s)
|
||||||
elsif (/^repo (.*)/)
|
elsif (/^repo (.*)/)
|
||||||
|
@ -210,7 +211,7 @@ sub parse_conf_file
|
||||||
# expand the user list, unless it is just "@all"
|
# expand the user list, unless it is just "@all"
|
||||||
@users = expand_list ( @users )
|
@users = expand_list ( @users )
|
||||||
unless (@users == 1 and $users[0] eq '@all');
|
unless (@users == 1 and $users[0] eq '@all');
|
||||||
do { die "$ATTN bad username $_\n" unless $_ =~ $USERNAME_PATT } for @users;
|
do { die "$ABRT bad username $_\n" unless $_ =~ $USERNAME_PATT } for @users;
|
||||||
|
|
||||||
# ok, we can finally populate the %repos hash
|
# ok, we can finally populate the %repos hash
|
||||||
for my $repo (@repos) # each repo in the current stanza
|
for my $repo (@repos) # each repo in the current stanza
|
||||||
|
@ -250,7 +251,7 @@ sub parse_conf_file
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
die "$ATTN can't make head or tail of '$_'\n";
|
die "$ABRT can't make head or tail of '$_'\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for my $ig (sort keys %ignored)
|
for my $ig (sort keys %ignored)
|
||||||
|
@ -275,7 +276,7 @@ for my $fragment_file (glob("conf/fragments/*.conf"))
|
||||||
|
|
||||||
my $compiled_fh = wrap_open( ">", $GL_CONF_COMPILED );
|
my $compiled_fh = wrap_open( ">", $GL_CONF_COMPILED );
|
||||||
print $compiled_fh Data::Dumper->Dump([\%repos], [qw(*repos)]);
|
print $compiled_fh Data::Dumper->Dump([\%repos], [qw(*repos)]);
|
||||||
close $compiled_fh or die "$ATTN close compiled-conf failed: $!\n";
|
close $compiled_fh or die "$ABRT close compiled-conf failed: $!\n";
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# any new repos to be created?
|
# any new repos to be created?
|
||||||
|
@ -288,7 +289,7 @@ close $compiled_fh or die "$ATTN close compiled-conf failed: $!\n";
|
||||||
# but it turns out not everyone has "modern" gits :)
|
# but it turns out not everyone has "modern" gits :)
|
||||||
my $git_version = `git --version`;
|
my $git_version = `git --version`;
|
||||||
my ($gv_maj, $gv_min, $gv_patchrel) = ($git_version =~ m/git version (\d+)\.(\d+)\.(\d+)/);
|
my ($gv_maj, $gv_min, $gv_patchrel) = ($git_version =~ m/git version (\d+)\.(\d+)\.(\d+)/);
|
||||||
die "$ATTN I can't understand $git_version\n" unless ($gv_maj >= 1);
|
die "$ABRT I can't understand $git_version\n" unless ($gv_maj >= 1);
|
||||||
$git_version = $gv_maj*10000 + $gv_min*100 + $gv_patchrel; # now it's "normalised"
|
$git_version = $gv_maj*10000 + $gv_min*100 + $gv_patchrel; # now it's "normalised"
|
||||||
my $git_too_old = 0;
|
my $git_too_old = 0;
|
||||||
|
|
||||||
|
@ -300,7 +301,7 @@ for my $repo (keys %repos)
|
||||||
{
|
{
|
||||||
unless (-d "$repo.git")
|
unless (-d "$repo.git")
|
||||||
{
|
{
|
||||||
system("mkdir", "-p", "$repo.git") and die "$ATTN mkdir $repo.git failed: $!\n";
|
system("mkdir", "-p", "$repo.git") and die "$ABRT mkdir $repo.git failed: $!\n";
|
||||||
# erm, note that's "and die" not "or die" as is normal in perl
|
# erm, note that's "and die" not "or die" as is normal in perl
|
||||||
wrap_chdir("$repo.git");
|
wrap_chdir("$repo.git");
|
||||||
system("git --bare init");
|
system("git --bare init");
|
||||||
|
@ -424,11 +425,11 @@ for my $pubkey (glob("*"))
|
||||||
for my $user (sort keys %user_list)
|
for my $user (sort keys %user_list)
|
||||||
{
|
{
|
||||||
next if $user =~ /^(gitweb|daemon|\@all)$/ or $user_list{$user} eq 'has pubkey';
|
next if $user =~ /^(gitweb|daemon|\@all)$/ or $user_list{$user} eq 'has pubkey';
|
||||||
print STDERR "$ATTN user $user in config, but has no pubkey!\n";
|
print STDERR "$WARN user $user in config, but has no pubkey!\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
print $newkeys_fh "# gitolite end\n";
|
print $newkeys_fh "# gitolite end\n";
|
||||||
close $newkeys_fh or die "$ATTN close newkeys failed: $!\n";
|
close $newkeys_fh or die "$ABRT close newkeys failed: $!\n";
|
||||||
|
|
||||||
# all done; overwrite the file (use cat to avoid perm changes)
|
# all done; overwrite the file (use cat to avoid perm changes)
|
||||||
system("cat $ENV{HOME}/.ssh/authorized_keys > $ENV{HOME}/.ssh/old_authkeys");
|
system("cat $ENV{HOME}/.ssh/authorized_keys > $ENV{HOME}/.ssh/old_authkeys");
|
||||||
|
|
Loading…
Reference in a new issue