clean up use of IkiWiki::Receive
Loading and use of IkiWiki::Receive can all be pushed into the git plugin, rather than scattered around. I had at first wanted to make a receive plugin and move it there, but a plugin was not a good fit; you don't want users to have to manually load it, and making the git plugin load the receive plugin at the right times would need more, and ugly code.master
parent
5ee980d77a
commit
26dae8f049
|
@ -14,6 +14,7 @@ my $no_chdir=0;
|
||||||
sub import {
|
sub import {
|
||||||
hook(type => "checkconfig", id => "git", call => \&checkconfig);
|
hook(type => "checkconfig", id => "git", call => \&checkconfig);
|
||||||
hook(type => "getsetup", id => "git", call => \&getsetup);
|
hook(type => "getsetup", id => "git", call => \&getsetup);
|
||||||
|
hook(type => "genwrapper", id => "git", call => \&genwrapper);
|
||||||
hook(type => "rcs", id => "rcs_update", call => \&rcs_update);
|
hook(type => "rcs", id => "rcs_update", call => \&rcs_update);
|
||||||
hook(type => "rcs", id => "rcs_prepedit", call => \&rcs_prepedit);
|
hook(type => "rcs", id => "rcs_prepedit", call => \&rcs_prepedit);
|
||||||
hook(type => "rcs", id => "rcs_commit", call => \&rcs_commit);
|
hook(type => "rcs", id => "rcs_commit", call => \&rcs_commit);
|
||||||
|
@ -41,6 +42,7 @@ sub checkconfig () {
|
||||||
wrappermode => (defined $config{git_wrappermode} ? $config{git_wrappermode} : "06755"),
|
wrappermode => (defined $config{git_wrappermode} ? $config{git_wrappermode} : "06755"),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined $config{git_test_receive_wrapper} &&
|
if (defined $config{git_test_receive_wrapper} &&
|
||||||
length $config{git_test_receive_wrapper}) {
|
length $config{git_test_receive_wrapper}) {
|
||||||
push @{$config{wrappers}}, {
|
push @{$config{wrappers}}, {
|
||||||
|
@ -49,6 +51,13 @@ sub checkconfig () {
|
||||||
wrappermode => (defined $config{git_wrappermode} ? $config{git_wrappermode} : "06755"),
|
wrappermode => (defined $config{git_wrappermode} ? $config{git_wrappermode} : "06755"),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Run receive test only if being called by the wrapper, and not
|
||||||
|
# when generating same.
|
||||||
|
if ($config{test_receive} && ! exists $config{wrapper}) {
|
||||||
|
require IkiWiki::Receive;
|
||||||
|
IkiWiki::Receive::test();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getsetup () {
|
sub getsetup () {
|
||||||
|
@ -115,6 +124,16 @@ sub getsetup () {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub genwrapper {
|
||||||
|
if ($config{test_receive}) {
|
||||||
|
require IkiWiki::Receive;
|
||||||
|
return IkiWiki::Receive::genwrapper();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sub safe_git (&@) {
|
sub safe_git (&@) {
|
||||||
# Start a child process safely without resorting /bin/sh.
|
# Start a child process safely without resorting /bin/sh.
|
||||||
# Return command output or success state (in scalar context).
|
# Return command output or success state (in scalar context).
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
package IkiWiki::Receive;
|
package IkiWiki::Receive;
|
||||||
|
|
||||||
use warnings;
|
use warnings;
|
||||||
|
@ -20,9 +19,9 @@ sub trusted () {
|
||||||
! grep { $_ eq $user } @{$config{untrusted_committers}};
|
! grep { $_ eq $user } @{$config{untrusted_committers}};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub gen_wrapper () {
|
sub genwrapper () {
|
||||||
# Test for commits from untrusted committers in the wrapper, to
|
# Test for commits from untrusted committers in the wrapper, to
|
||||||
# avoid loading ikiwiki at all for trusted commits.
|
# avoid starting ikiwiki proper at all for trusted commits.
|
||||||
|
|
||||||
my $ret=<<"EOF";
|
my $ret=<<"EOF";
|
||||||
{
|
{
|
||||||
|
@ -37,6 +36,8 @@ EOF
|
||||||
"u != $uid";
|
"u != $uid";
|
||||||
} @{$config{untrusted_committers}}).
|
} @{$config{untrusted_committers}}).
|
||||||
") exit(0);\n";
|
") exit(0);\n";
|
||||||
|
|
||||||
|
|
||||||
$ret.=<<"EOF";
|
$ret.=<<"EOF";
|
||||||
asprintf(&s, "CALLER_UID=%i", u);
|
asprintf(&s, "CALLER_UID=%i", u);
|
||||||
newenviron[i++]=s;
|
newenviron[i++]=s;
|
||||||
|
|
|
@ -38,10 +38,6 @@ sub gen_wrapper () {
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($config{test_receive}) {
|
|
||||||
require IkiWiki::Receive;
|
|
||||||
}
|
|
||||||
|
|
||||||
my @wrapper_hooks;
|
my @wrapper_hooks;
|
||||||
run_hooks(genwrapper => sub { push @wrapper_hooks, shift->() });
|
run_hooks(genwrapper => sub { push @wrapper_hooks, shift->() });
|
||||||
|
|
||||||
|
|
|
@ -190,10 +190,6 @@ sub main () {
|
||||||
elsif ($config{post_commit} && ! commit_hook_enabled()) {
|
elsif ($config{post_commit} && ! commit_hook_enabled()) {
|
||||||
# do nothing
|
# do nothing
|
||||||
}
|
}
|
||||||
elsif ($config{test_receive}) {
|
|
||||||
require IkiWiki::Receive;
|
|
||||||
IkiWiki::Receive::test();
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
if ($config{rebuild}) {
|
if ($config{rebuild}) {
|
||||||
debug(gettext("rebuilding wiki.."));
|
debug(gettext("rebuilding wiki.."));
|
||||||
|
|
Loading…
Reference in New Issue