[21798] | 1 | my $sep = $^O eq "MSWin32" ? "\\" : "/";
|
---|
| 2 |
|
---|
[21709] | 3 | sub get_date {
|
---|
| 4 | local ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
|
---|
| 5 | local $day = $mday;
|
---|
| 6 | local $month = $mon+1;
|
---|
| 7 | local $year = $year+1900;
|
---|
| 8 | if ( length $month == 1 ) {
|
---|
| 9 | $month = join( "", "0", $month);
|
---|
| 10 | }
|
---|
| 11 | if ( length $day== 1 ) {
|
---|
| 12 | $day = join( "", "0", $day );
|
---|
| 13 | }
|
---|
| 14 | local $date = join( ".", $year,$month,$day );
|
---|
| 15 | return $date;
|
---|
| 16 | }
|
---|
| 17 |
|
---|
| 18 | sub gen_snapshot_id {
|
---|
| 19 | if ( exists $_[0] && exists $_[1] ) {
|
---|
| 20 | return $_[0] . get_date() . $_[1];
|
---|
| 21 | }
|
---|
| 22 |
|
---|
| 23 | if ( exists $_[0] ) {
|
---|
| 24 | return $_[0] . get_date();
|
---|
| 25 | }
|
---|
| 26 | return get_date();
|
---|
| 27 | }
|
---|
| 28 |
|
---|
| 29 | sub create {
|
---|
| 30 |
|
---|
| 31 | die "release_dir not set, cant create\n" unless $release_dir;
|
---|
| 32 |
|
---|
| 33 | print "about to clean up old snapshots (Ctrl-C to cancel)";
|
---|
| 34 | local $| = 1;
|
---|
| 35 | for ( my $i=0; $i<5; $i++ ) {
|
---|
| 36 | print ".";
|
---|
| 37 | sleep 1;
|
---|
| 38 | }
|
---|
| 39 | $| = 0;
|
---|
| 40 |
|
---|
| 41 | print "cleaning up previous snapshot\n";
|
---|
[21798] | 42 | local $release_parent = dirname($release_dir);
|
---|
[21709] | 43 | if ( $^O eq "MSWin32" ) {
|
---|
| 44 | system("rd /q /s \"$release_parent\"");
|
---|
| 45 | } else {
|
---|
| 46 | system("rm -rf \"$release_parent\"");
|
---|
| 47 | }
|
---|
| 48 |
|
---|
| 49 | print "creating the release dir\n";
|
---|
[21798] | 50 | mkdir $release_parent or die "couldn't create release parent directory\n";
|
---|
[21709] | 51 | mkdir $release_dir or die "couldn't create release directory\n";
|
---|
| 52 |
|
---|
| 53 | print "changing to the release dir\n";
|
---|
| 54 | chdir $release_dir;
|
---|
| 55 |
|
---|
| 56 | #version property
|
---|
| 57 | print "setting up todays properties\n";
|
---|
| 58 | `echo version:$snapshot_id> $rk-build.properties`;
|
---|
| 59 |
|
---|
| 60 | #processor propertylocal $| = 1;
|
---|
| 61 | if ( $^O eq "darwin" ) {
|
---|
| 62 | print "setting processor\n";
|
---|
| 63 | if ( `uname -p` eq "i386" ) {
|
---|
| 64 | `echo processor:intel>> $rk-build.properties`;
|
---|
| 65 | } elsif ( `uname -p` eq "powerpc" ) {
|
---|
| 66 | `echo processor:ppc>> $rk-build.properties`;
|
---|
| 67 | } else {
|
---|
| 68 | print "unable to determine processor type, using intel\n";
|
---|
| 69 | `echo processor:intel>> $rk-build.properties`;
|
---|
| 70 | }
|
---|
| 71 | }
|
---|
| 72 |
|
---|
| 73 | #branch path property
|
---|
| 74 | if ( $ENV{'branch_path'} ) {
|
---|
| 75 | `echo branch.path:$ENV{'branch_path'}>> $rk-build.properties`;
|
---|
| 76 | }
|
---|
| 77 |
|
---|
| 78 | #server.exe.location
|
---|
| 79 | if ( exists $ENV{'SERVER_EXE_LOCATION'} ) {
|
---|
| 80 | `echo server.exe.location:$ENV{'SERVER_EXE_LOCATION'}>> $rk-build.properties`;
|
---|
| 81 | }
|
---|
| 82 |
|
---|
| 83 | print "creating the snapshot using $rk\n";
|
---|
| 84 | system( $rk );
|
---|
| 85 |
|
---|
| 86 | }
|
---|
| 87 |
|
---|
| 88 | sub upload {
|
---|
| 89 | print "uploading files\n";
|
---|
| 90 |
|
---|
| 91 | my @munges = ();
|
---|
| 92 | if ( exists $ENV{'munges'} ) {
|
---|
| 93 | @munges = split(' ', $ENV{'munges'});
|
---|
| 94 | }
|
---|
| 95 |
|
---|
[21774] | 96 | #copy products to a temporary folder, giving them their new names
|
---|
[21798] | 97 | if ( ! -d "$release_dir${sep}uploads" ) {
|
---|
| 98 | system( "rm -rf '$release_dir${sep}uploads'" );
|
---|
[21774] | 99 | }
|
---|
[21798] | 100 | mkdir "$release_dir${sep}uploads";
|
---|
[21774] | 101 |
|
---|
[21797] | 102 | my @files;
|
---|
[21798] | 103 | if ( -d "$release_dir${sep}products" ) {
|
---|
[21886] | 104 | @files = <$release_dir${sep}products${sep}*>;
|
---|
[21797] | 105 | }
|
---|
[21798] | 106 | push( @files, "$release_dir${sep}$rk.out" );
|
---|
[21797] | 107 |
|
---|
[21709] | 108 | for my $file ( @files ) {
|
---|
[21798] | 109 | if ( -e $file ) {
|
---|
| 110 | my $filename = basename($file);
|
---|
| 111 | #munge
|
---|
| 112 | for my $m ( @munges ) {
|
---|
| 113 | $doit="\$filename =~ $m"; eval "$doit";
|
---|
| 114 | }
|
---|
| 115 | #upload
|
---|
| 116 | print "Will upload '" . basename($file) . "' to '$filename'\n";
|
---|
| 117 | system("copy \"$file\" \"${release_dir}${sep}uploads${sep}$filename\"");
|
---|
[21774] | 118 | }
|
---|
[21709] | 119 |
|
---|
| 120 | }
|
---|
[21798] | 121 |
|
---|
| 122 | my $command = "cd \"${release_dir}${sep}uploads\" && tar -c * | ";
|
---|
| 123 | $command .= ($^O eq "MSWin32" ? "plink" : "ssh");
|
---|
| 124 | $command .= " -T -i \"$ENV{'IDENTITY_FILE'}\" nzdl\@puka.cs.waikato.ac.nz";
|
---|
| 125 | #print "$command\n";
|
---|
[21797] | 126 | system("$command");
|
---|
[21709] | 127 | }
|
---|