root/trunk/plagger/tools/release.pl

Revision 1665 (checked in by miyagawa, 2 years ago)

make cpan-upload verbose

  • Property svn:executable set to *
Line 
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4 use File::Path;
5 use LWP::Simple;
6
7 my $version = shift @ARGV or die "Usage: release.pl version";
8
9 my $workdir  = "$ENV{HOME}/tmp";
10 my $checkout = "plagger-$version";
11
12 chdir $workdir;
13
14 if (-e $checkout) {
15     die "$workdir/$checkout exists. Remove it first";
16 }
17
18 system("svk co //mirror/plagger/trunk/plagger $checkout");
19 chdir $checkout;
20
21 rewrite_version("lib/Plagger.pm", $version);
22
23 system("perl Makefile.PL --skip");
24 system("make manifest");
25
26 my $url = "http://plagger.org/trac/wiki/PlaggerChangeLog?format=txt";
27 my $res = LWP::Simple::mirror($url, "Changes");
28 if ($res !~ /^[23]/) {
29     die "GET $url failed: $res";
30 }
31
32 check_version("Changes", $version);
33
34 if (!system("make disttest")) {
35     system("svk ci -m 'packaging $version'");
36     system("svk cp -m 'tag release $version' //mirror/plagger/trunk //mirror/plagger/tags/release-$version");
37     system("make dist");
38     system("cpan-upload -verbose Plagger-$version.tar.gz");
39 } else {
40     warn "make disttest failed. Don't upload";
41 }
42
43 chdir "..";
44 system("svk co --detach $checkout");
45 rmtree("$workdir/$checkout");
46
47 sub rewrite_version {
48     my($file, $version) = @_;
49
50     open my $fh, $file or die "$file: $!";
51     my $content = join '', <$fh>;
52     close $fh;
53
54     $content =~ s/^our \$VERSION = .*?;$/our \$VERSION = '$version';/m;
55
56     open my $out, ">", "lib/Plagger.pm";
57     print $out $content;
58     close $out;
59 }
60
61 sub check_version {
62     my($file, $version) = @_;
63
64     open my $fh, $file or die "$file: $!";
65     while (<$fh>) {
66         /== \Q$version\E / and return 1;
67     }
68
69     die "$file doesn't contain log for $version";
70 }
Note: See TracBrowser for help on using the browser.