"archivedir" => "/home/mj/tmp/archives/$basename",
"uploads" => [
],
+ "notifiers" => [
+ ],
# Options
"do_test" => 1,
"do_patch" => 1,
"do_upload" => 1,
"do_git_tag" => 0,
"force_git_tag" => 0,
+ "do_notify" => 0,
};
bless $s;
return $s;
--[no]upload Upload released files {do_upload}
--[no]git-tag Tag the Git repository with "v<version>" {do_git_tag}
--force-git-tag Rewrite the Git tag if it already exists {force_git_tag}
+--[no]notify Call scripts to notify the world about the release {do_notify}
FOE
sub state($) {
- return "(default: " . ($_ ? "on" : "off") . ")";
+ return "(default: " . ($_[0] ? "on" : "off") . ")";
}
$usage =~ s[{(\w+)}][state($s->{$1})]ge;
die $usage;
sub ParseOptions($) {
my ($s) = @_;
$s->{"do_git_tag"} = 1 if (-d ".git");
+ $s->{"do_notify"} = 1 if @{$s->{"notifiers"}};
GetOptions(
"verbose!" => \$verbose,
"test!" => \$s->{"do_test"},
"upload!" => \$s->{"do_upload"},
'git-tag!' => \$s->{"do_git_tag"},
'force-git-tag!' => \$s->{"force_git_tag"},
+ 'notify!' => \$s->{"do_notify"},
) || $s->Usage;
}
`git push --tags`; die if $?;
}
+sub AddUcwNotifier($) {
+ my ($r) = @_;
+ push @{$r->{"notifiers"}}, sub {
+ my ($s) = @_;
+ print "Updating web pages\n";
+ my $pkg = $s->{'PACKAGE'};
+ my $ver = $s->{'VERSION'};
+ `ssh jw 'cd www && bin/release-prog $pkg $ver'`; die if $?;
+ };
+};
+
sub Dispatch($) {
my ($s) = @_;
$s->Test if $s->{"do_test"};
$s->MakePatch if $s->{"do_patch"};
$s->GitTag if $s->{"do_git_tag"};
$s->Upload if $s->{"do_upload"};
+ if ($s->{"do_notify"}) {
+ for my $f (@{$s->{"notifiers"}}) {
+ &$f($s);
+ }
+ }
}
1;