Files
itgmania212121/stepmania/PBProject/scripts/mkrelease.pl
T

185 lines
4.6 KiB
Perl
Raw Normal View History

2006-05-14 06:57:32 +00:00
#!/usr/bin/perl -w
2005-05-01 18:35:03 +00:00
use strict;
2006-05-14 06:57:32 +00:00
use File::Copy;
use File::Path;
use File::Basename;
use File::Temp qw/tempfile tempdir/;
use Cwd;
2005-05-01 18:35:03 +00:00
2006-05-14 06:57:32 +00:00
my @filelist = qw( Announcers/instructions.txt
BackgroundTransitions
BackgroundEffects
BGAnimations/instructions.txt
2006-06-11 10:46:08 +00:00
CDTitles/Instructions.txt
2006-05-14 06:57:32 +00:00
Characters/default
2006-06-11 10:46:08 +00:00
Characters/Instructions.txt
2006-05-14 06:57:32 +00:00
Courses/instructions.txt
Courses/Samples
2006-06-11 10:46:08 +00:00
Packages/Instructions.txt
2006-05-14 06:57:32 +00:00
NoteSkins/instructions.txt
NoteSkins/common/default
NoteSkins/dance/default
NoteSkins/dance/flat
NoteSkins/dance/note
NoteSkins/dance/solo
NoteSkins/pump/Classic
NoteSkins/pump/default
RandomMovies/instructions.txt
2006-06-11 10:46:08 +00:00
Songs/Instructions.txt
2006-05-14 06:57:32 +00:00
Themes/instructions.txt
Themes/default
Data/Translations.xml
Data/AI.ini
Data/splash.png
StepMania.app );
my @docs = ( "BGAnimation conditionals.txt",
"BMA-fmt.txt",
"ConditionalBGA Info.txt",
"Copying.MAD",
"ChangeLog.txt",
"Licenses.txt" );
2005-05-01 18:35:03 +00:00
2006-05-14 06:57:32 +00:00
# Passing a date for a CVS release gives StepMania-CVS-date.
# Otherwise you get Stepmania-ver.
die "usage: $0 [date]\n" if @ARGV > 1;
my $root = getcwd;
my $scripts = dirname $0;
my $srcdir = ( $scripts =~ m{^/} ? "$scripts/../.." :
"$root/$scripts/../.." );
my $family;
my $id;
my $ver;
2005-05-01 18:35:03 +00:00
2006-05-14 06:57:32 +00:00
open FH, "$srcdir/src/ProductInfo.h" or die "Where am I?\n";
while( <FH> )
2005-05-01 18:35:03 +00:00
{
2006-05-14 06:57:32 +00:00
if( /^#define\s+PRODUCT_FAMILY_BARE\s+(.*?)\s*$/ ) {
$family = $1;
} elsif( /^#define\s+PRODUCT_ID_BARE\s+(.*?)\s*$/ ) {
$id = $1;
} elsif( /^#define\s+PRODUCT_VER_BARE\s+(.*?)\s*$/ ) {
$ver = $1;
}
2005-05-01 18:35:03 +00:00
}
2006-05-14 06:57:32 +00:00
close FH;
2005-05-01 18:35:03 +00:00
2006-05-14 06:57:32 +00:00
my $destname = @ARGV ? "$id-$ARGV[0]" : "$family-$ver";
2005-05-01 18:35:03 +00:00
2006-05-14 06:57:32 +00:00
$destname =~ s/\s+/-/g;
2005-05-01 18:35:03 +00:00
2006-05-14 06:57:32 +00:00
my $destdir = tempdir;
my $smdir = "$destdir/$id";
my $pkg = "$root/$destname.pkg";
2006-06-26 10:42:47 +00:00
my $zip = "$root/$destname-mac.zip";
2005-05-01 18:35:03 +00:00
2006-05-14 06:57:32 +00:00
for( @filelist )
2005-05-01 18:35:03 +00:00
{
2006-05-14 06:57:32 +00:00
mkpath "$smdir/" . dirname $_;
system 'cp', '-r', "$srcdir/$_", "$smdir/$_" and die "cp -r failed: $!\n";
2005-05-01 18:35:03 +00:00
}
2006-05-14 06:57:32 +00:00
# Copy docs
mkdir "$smdir/Docs";
copy "$srcdir/Docs/$_", "$smdir/Docs/$_" for @docs;
2005-05-01 18:35:03 +00:00
#clean up CVS directories
2006-06-26 10:42:47 +00:00
my @cvsdirs = split /\n/, `find "$smdir" -type d -name CVS`;
2006-05-14 06:57:32 +00:00
rmtree \@cvsdirs;
system 'strip', '-x', "$smdir/StepMania.app/Contents/MacOS/StepMania";
my ($ih, $infoname) = tempfile;
my ($dh, $descname) = tempfile;
my $year = 1900+(localtime)[5];
2005-05-01 18:35:03 +00:00
2006-05-14 06:57:32 +00:00
$ver =~ /(\d+)\.(\d+)/;
my ($major, $minor) = ($1, $2);
$major ||= 0;
$minor ||= 0;
2005-05-01 18:35:03 +00:00
2006-05-14 06:57:32 +00:00
print $ih <<EOF;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0/EN" "http://www.apple.com/DTDs/P
ropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleGetInfoString</key>
<string>$ver, Copyright ©2001-$year $family</string>
<key>CFBundleIdentifier</key>
<string>com.$family.$id</string>
<key>CFBundleShortVersionString</key>
<string>$major.$minor</string>
2006-05-14 06:57:32 +00:00
<key>IFMajorVersion</key>
<integer>$major</integer>
<key>IFMinorVersion</key>
<integer>$minor</integer>
<key>IFPkgFlagAllowBackRev</key>
<true/>
<key>IFPkgFlagAuthorizationAction</key>
<string>AdminAuthorization</string>
<key>IFPkgFlagBackgroundAlignment</key>
<string>center</string>
<key>IFPkgFlagBackgroundScaling</key>
<string>none</string>
<key>IFPkgFlagDefaultLocation</key>
<string>/Applications</string>
<key>IFPkgFlagFollowLinks</key>
<true/>
<key>IFPkgFlagInstallFat</key>
<true/>
<key>IFPkgFlagInstalledSize</key>
<integer>36080</integer>
<key>IFPkgFlagIsRequired</key>
<false/>
<key>IFPkgFlagOverwritePermissions</key>
<false/>
<key>IFPkgFlagRelocatable</key>
<true/>
<key>IFPkgFlagRestartAction</key>
<string>NoRestart</string>
<key>IFPkgFlagRootVolumeOnly</key>
<false/>
<key>IFPkgFlagUpdateInstalledLanguages</key>
<false/>
<key>IFPkgFormatVersion</key>
<real>0.10000000149011612</real>
</dict>
</plist>
EOF
close $ih;
print $dh <<EOF;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IFPkgDescriptionDescription</key>
<string></string>
<key>IFPkgDescriptionTitle</key>
<string>$id</string>
</dict>
</plist>
EOF
close $dh;
if( -e $pkg )
2005-05-01 18:35:03 +00:00
{
2006-05-14 06:57:32 +00:00
print "Removing $pkg\n";
rmtree "$pkg";
2005-05-01 18:35:03 +00:00
}
my @headerdir = split /\n/, `find "$smdir/StepMania.app" -type d -name Headers`;
rmtree \@headerdir;
2006-05-14 06:57:32 +00:00
my $pm =
'/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker';
2006-05-17 10:42:37 +00:00
system $pm, '-build', '-p', $pkg, '-f', $destdir, '-ds',
2006-05-14 06:57:32 +00:00
'-i', $infoname, '-d', $descname;
unlink $infoname, $descname;
rmtree $destdir;
print "Created $destname.pkg.\n";
2006-05-17 10:42:37 +00:00
if( -e $zip )
{
print "Removing $zip\n";
unlink $zip;
}
chdir $root;
system '/usr/bin/zip', '-9Tqyr', $zip, "$destname.pkg";
2006-06-26 10:42:47 +00:00
print "Created $destname-mac.zip.\n";