#!/usr/bin/perl $debug = 0; my $reldir = "release"; while ($moddir = shift @ARGV) { if (($moddir eq "-h") || ($moddir eq "-help") || ($moddir eq "--h") || ($moddir eq "--help")) { die "Usage: publish [moduledirectory]\n"; } next if (!-d $moddir); open FH, "$moddir/module.xml"; $newxml = ""; $vers = "unset"; $rawname = "unset"; while () { if ($vers == 'unset' && /(.+)<\/version>/) { $vers = $1; } if (/(.+)<\/rawname>/) { $rawname = $1; } $newxml .= $_; } close FH; die "Don't know version of $moddir" if ($vers eq "unset"); die "Don't know rawname of $moddir" if ($rawname eq "unset"); # Automatically check in any files that were modified but weren't checked into SVN chdir($moddir); @arr = <*>; $files = ""; while ($x = shift @arr) { # Excluding module.xml which gets checked in later.. next if ($x =~ /module.xml/); $files .= "$x "; } if ($debug) { print "svn ci -m \"Auto Check-in of any outstanding patches\" $files\n"; } else { system("svn ci -m \"Auto Check-in of any outstanding patches\" $files"); } chdir(".."); # Now we know the version. Create the tar.gz $filename = "$rawname-$vers.tgz"; system("tar zcf $filename --exclude .svn $rawname"); # Update the md5 info open MD5, "md5sum $filename|"; $md5 = ; close MD5; ($md5sum, $null) = split(/ /, $md5); $newxml =~ s/.+<\/md5sum>/$md5sum<\/md5sum>/; $newxml =~ s/.+<\/location>/$reldir\/$filename<\/location>/; open FH, ">$moddir/module.xml"; print FH $newxml; close FH; if ($debug) { print "mv $filename ../release/\n"; print "svn add ../release/$filename\n"; print "svn ps svn:mime-type application/tgz ../release/$filename\n"; print "svn ci ../release/$filename $rawname/module.xml -m \"Module Publish Script: $rawname $vers\"\n"; } else { system("mv $filename ../release/"); system("svn add ../release/$filename"); system("svn ps svn:mime-type application/tgz ../release/$filename"); system("svn ci ../release/$filename $rawname/module.xml -m \"Module Publish Script: $rawname $vers\""); } }