root/branches/feature-server/plagger/tools/release.pl

Revision 937 (checked in by miyagawa, 3 years ago)

merge from trunk

  • 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 mkdir "inc/.author", 0777; # to create META.yml
24 system("yes n | perl Makefile.PL");
25 system("make manifest");
26 system("make test");
27
28 my $url = "http://plagger.org/trac/wiki/PlaggerChangeLog?format=txt";
29 my $res = LWP::Simple::mirror($url, "Changes");
30 if ($res !~ /^[23]/) {
31     die "GET $url failed: $res";
32 }
33
34 check_version("Changes", $version);
35
36 if (!system("make disttest")) {
37     system("svk ci -m 'packaging $version'");
38     system("svk cp -m 'tag release $version' //mirror/plagger/trunk //mirror/plagger/tags/release-$version");
39     system("make dist");
40     system("cpan-upload Plagger-$version.tar.gz");
41 } else {
42     warn "make disttest failed. Don't upload";
43 }
44
45 chdir "..";
46 system("svk co --detach $checkout");
47 rmtree("$workdir/$checkout");
48
49 sub rewrite_version {
50     my($file, $version) = @_;
51
52     open my $fh, $file or die "$file: $!";
53     my $content = join '', <$fh>;
54     close $fh;
55
56     $content =~ s/^our \$VERSION = .*?;$/our \$VERSION = '$version';/m;
57
58     open my $out, ">", "lib/Plagger.pm";
59     print $out $content;
60     close $out;
61 }
62
63 sub check_version {
64     my($file, $version) = @_;
65
66     open my $fh, $file or die "$file: $!";
67     while (<$fh>) {
68         /== \Q$version\E / and return 1;
69     }
70
71     die "$file doesn't contain log for $version";
72 }
Note: See TracBrowser for help on using the browser.