]> mj.ucw.cz Git - checkmail.git/blobdiff - maint/release.pm
Maint: Updated path to release-prog
[checkmail.git] / maint / release.pm
index cc84bbe3676b5401fb995dee18a5f5dd249763bd..c1a6abda038fefa82cc9ec6f9b3be8c3a8ab20d8 100644 (file)
@@ -17,7 +17,8 @@ sub new($$) {
                        # p=preprocess, s=subst, -=discard
                        '(^|/)(CVS|\.arch-ids|{arch}|\.git|tmp)/' => '-',
                        '\.(lsm|spec)$' => 'ps',
-                       '(^|/)README$' => 's'
+                       '(^|/)README$' => 's',
+                       '\.swp$' => '-',
                        ],
                "directories" => [
                        ],
@@ -30,6 +31,9 @@ sub new($$) {
                "archivedir" => "/home/mj/tmp/archives/$basename",
                "uploads" => [
                        ],
+               "notifiers" => [
+                       ],
+               "test_cmd" => "make",
                # Options
                "do_test" => 1,
                "do_patch" => 1,
@@ -37,6 +41,7 @@ sub new($$) {
                "do_upload" => 1,
                "do_git_tag" => 0,
                "force_git_tag" => 0,
+               "do_notify" => 0,
        };
        bless $s;
        return $s;
@@ -231,9 +236,10 @@ Options:
 --[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;
@@ -242,6 +248,7 @@ FOE
 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"},
@@ -250,6 +257,7 @@ sub ParseOptions($) {
                "upload!" => \$s->{"do_upload"},
                'git-tag!' => \$s->{"do_git_tag"},
                'force-git-tag!' => \$s->{"force_git_tag"},
+               'notify!' => \$s->{"do_notify"},
        ) || $s->Usage;
 }
 
@@ -258,8 +266,9 @@ sub Test($) {
        my $dd = $s->{"DISTDIR"};
        my $pkg = $s->{"PKG"};
        my $log = "$dd/$pkg.log";
+       my $test_cmd = $s->{"test_cmd"};
        print "Doing a test compilation\n";
-       `( cd $dd/$pkg && make ) >$log 2>&1`;
+       `( cd $dd/$pkg && $test_cmd ) >$log 2>&1`;
        die "There were errors. Please inspect $log" if $?;
        `grep -q [Ww]arning $log`;
        $? or print "There were warnings! Please inspect $log.\n";
@@ -343,12 +352,28 @@ sub GitTag($) {
        `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 web && 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;