diff --git a/Xcode/scripts/README.md b/Xcode/scripts/README.md new file mode 100644 index 0000000000..282dad2ca1 --- /dev/null +++ b/Xcode/scripts/README.md @@ -0,0 +1,15 @@ +StepMania Scripts For OS X +========= + +This script can be used to bundle a .dmg installer of StepMania. +It assumes you have already built a StepMania.app using Xcode and +that your stepmania directory structure is intact as you cloned it. + +To use this script, open a terminal and cd to your stepmania directory, +then run the following commands: + +cd Xcode/scripts +ruby mkrelease.rb + +You'll see output as each stepmania sub-directory is copied into a tmp directory. +If all goes well, you'll be notified that the dmg was created in your stepmania directory. \ No newline at end of file diff --git a/Xcode/scripts/increment_version.pl b/Xcode/scripts/increment_version.pl deleted file mode 100644 index d0a8956f17..0000000000 --- a/Xcode/scripts/increment_version.pl +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/perl -w -use File::Copy; - -$ver = 0; -if( open FH, ' =~ /version_num = (\d+);/ and $ver = $1 + 1; - close FH; -} -chop( $date = `date` ); -chop( $time = `time` ); -open FH, '>.ver.tmp' or die $!; -print FH <<"EOF"; -extern const unsigned long version_num = $ver; -extern const char *const version_date = "$date"; -extern const char *const version_time = "$time"; -EOF -close FH; -move '.ver.tmp', 'ver.cpp'; diff --git a/Xcode/scripts/mkrelease.pl b/Xcode/scripts/mkrelease.pl deleted file mode 100644 index ef966c4212..0000000000 --- a/Xcode/scripts/mkrelease.pl +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/perl -w - -use strict; -use File::Copy; -use File::Path; -use File::Basename; -use File::Temp qw/tempfile tempdir/; -use Cwd; - -my @docs = ( - "Licenses.txt", - "Changelog_sm5.txt", - "Changelog_sm-ssc.txt", - "Changelog_SSCformat.txt", - "CommandLineArgs.txt", - "credits.txt" -); - -my @themerdocs = ( - "actordef.txt", - "conditional_music.txt", - "fontini.txt", - "gamecommands.txt", - "included_scripts.txt", - "moremsg.txt", - "Noteskin elements Reference.txt", - "recommended_practices.txt", - "ScreenMessages.txt", - "ScreenTextEntry.txt", - "sm-ssc_themeguide.txt", - "ThemePrefs.txt", - "ThemePrefsRows.txt" -); - -# XXX -my @songs = ( "Instructions.txt" ); -my @song_mechatribe = ( - "Mecha-Tribe Assault.ssc", - "Mecha-Tribe Assault.ogg", - "mechatribeassaultbg.png", - "mechatribeassaultbn.png", - "wyde cd-tital.png" -); - -my @song_springtime = ( - "Springtime.ssc", - "Kommisar - Springtime.mp3", - "spring.png", - "springbn.png" -); - -# 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; - -open FH, "$srcdir/src/ProductInfo.h" or die "Where am I?\n"; -while( ) -{ - 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; - } -} -close FH; - -my $destname = @ARGV ? "$id-$ARGV[0]" : "$family-$ver"; - -$destname =~ s/\s+/-/g; - -my $tmp = tempdir; - -# Copy StepMania and make smzip -system 'cp', '-r', "$srcdir/StepMania.app", $tmp and die "cp -r failed: $!\n"; -system 'strip', '-x', "$tmp/StepMania.app/Contents/MacOS/StepMania"; - -mkdir "$tmp/Packages"; -system "$srcdir/Utils/CreatePackage.pl", $srcdir, "$tmp/Packages" and die "mksmdata.pl failed: $!\n"; - -# Copy docs -mkdir "$tmp/Docs"; -copy "$srcdir/Docs/$_", "$tmp/Docs/$_" for @docs; - -# Copy themer docs -mkdir "$tmp/Docs/Themerdocs"; -copy "$srcdir/Docs/Themerdocs/$_", "$tmp/Docs/Themerdocs/$_" for @themerdocs; - -# Copy songs -mkdir "$tmp/Songs"; -copy "$srcdir/Songs/$_", "$tmp/Songs/$_" for @songs; - -# oh man, is this ugly or what -mkdir "$tmp/Songs/StepMania 5"; - -mkdir "$tmp/Songs/StepMania 5/MechaTribe Assault"; -copy "$srcdir/Songs/StepMania 5/MechaTribe Assault/$_", "$tmp/Songs/StepMania 5/MechaTribe Assault/$_" for @song_mechatribe; - -mkdir "$tmp/Songs/StepMania 5/Springtime"; -copy "$srcdir/Songs/StepMania 5/Springtime/$_", "$tmp/Songs/StepMania 5/Springtime/$_" for @song_springtime; - -# Make a dmg -system qw/hdiutil create -ov -format UDZO -imagekey zlib-level=9 -srcfolder/, $tmp, '-volname', $destname, "$root/$destname-mac.dmg"; -rmtree $tmp; diff --git a/Xcode/scripts/mkrelease.rb b/Xcode/scripts/mkrelease.rb new file mode 100644 index 0000000000..20b3156ee9 --- /dev/null +++ b/Xcode/scripts/mkrelease.rb @@ -0,0 +1,58 @@ +# 'fileutils' is used to recursively copy directories +# 'tmpdir' is used to create and work with temporary directories +require 'fileutils' +require 'tmpdir' + +# cd to the StepMania 5 src directory +Dir.chdir "../../src" + +# initialize empty strings +family, version = "" + +# open ProductInfo.h in read-only mode +File.open("#{Dir.pwd}/ProductInfo.h", "r") do |f| + # read each line, matching for product family and version + f.each do |line| + if line.match( /^#define\s+PRODUCT_FAMILY_BARE\s+(.*?)\s*$/ ) + family = $1; + + elsif line.match( /^#define\s+PRODUCT_VER_BARE\s+(.*?)\s*$/ ) + version = $1; + end + end +end + +# replace whitespace with hyphens in version string +version.gsub!(/\s+/,"-") + +# the name of the .dmg file +name = "#{family}-#{version}-mac.dmg" + +# a list of directories we want to include in our .dmg +directories = [ "Announcers", "BackgroundEffects", "BackgroundTransitions", + "BGAnimations", "Characters", "Courses", "Data", "Docs", "Manual", + "NoteSkins", "Scripts", "Songs", "StepMania.app", "Themes" ] + +# cd back to the root of the StepMania 5 directory +Dir.chdir ".." + +# create a temp directory; this will be automatically deleted when the block completes +Dir.mktmpdir {|temp| + + # nest two directories named by family and version within the temp directory + # the outer will become the root of the dmg + # the inner will neatly tidy all the contents together so users can easily drag/drop everything at once + FileUtils.mkdir_p("#{temp}/#{family}-#{version}/#{family}-#{version}/") + + # loop through the directories array + directories.each do |directory| + # recursively copy each directory into our temp directory + FileUtils.cp_r directory, "#{temp}/#{family}-#{version}/#{family}-#{version}/", :verbose => true + end + + #construct the shell command that will create the dmg + cmd = "hdiutil create #{Dir.pwd}/#{name} -srcfolder #{temp}/#{family}-#{version} -ov" + + #execute the command in a subshell + system( cmd ) +} \ No newline at end of file