#!/usr/bin/env ruby require 'fileutils' RAILS_TRUNK = 'http://svn.rubyonrails.org/rails/trunk' PLUGINS = { 'annotate_models' => 'http://svn.pragprog.com/Public/plugins/annotate_models/', 'default_stylesheets' => 'https://svn.integrumtech.com/public/plugins/default_stylesheets', 'exception_notification' => 'http://svn.rubyonrails.org/rails/plugins/exception_notification/', 'rake_tasks' => 'https://svn.integrumtech.com/public/plugins/rake_tasks', 'rspec' => 'svn://rubyforge.org/var/svn/rspec/trunk/rspec', 'rspec_on_rails' => 'svn://rubyforge.org/var/svn/rspec/trunk/rspec_on_rails', 'rspec_on_rails_matchers' => 'https://svn.integrumtech.com/public/plugins/rspec_on_rails_matchers' } DATABASES = [ 'mysql', 'postgresql', 'sqlite3' ] TMP_FILES = [ 'README', 'test', 'config/database.yml', 'doc/README_FOR_APP', 'log/*', 'public/index.html', 'public/images/rails.png', 'tmp/*' ] IGNORES = { '.' => 'test', 'log' => '*', 'tmp' => '*', 'db' => '*.sqlite3', 'config' => 'database.yml' } # Create the vendor and vendor/plugins directories p 'Creating vendor directories...' FileUtils.mkpath('vendor/plugins') # Add the newly created directories to svn `svn add vendor` # Commit the directory additions p 'Committing...' `svn up` `svn ci -m ''` `svn up` # Piston import Rails edge into vendor/rails p 'Importing edge rails...' `piston import #{RAILS_TRUNK} vendor/rails` # Commit the import p 'Committing...' `svn up` `svn ci -m 'Imported Edge Rails'` `svn up` # Piston import each of the standard plugins into vendor/plugins p 'Importing standard plugins...' PLUGINS.each { |plugin_name, plugin_repository| `piston import #{plugin_repository} vendor/plugins/#{plugin_name}` } # Commit the imports p 'Committing...' `svn up` `svn ci -m 'Imported standard plugins'` `svn up` # Execute the Rails command generating an example database file for each major database p 'Generating rails structure...' DATABASES.each do |database| `ruby vendor/rails/railties/bin/rails -s -q -d #{database} .` FileUtils.mv('config/database.yml', "config/database.yml.#{database}") end # Remove unwanted tmp files p 'Removing tmp files...' TMP_FILES.each do |pattern| Dir[pattern].each { |tmp| FileUtils.rm_rf tmp } end # Add generated files to svn `svn add --force .` # Commit the changes p 'Committing...' `svn up` `svn ci -m 'Generated rails skeleton'` `svn up` # Set svn:ignore on tmp files p 'Ignoring tmp files...' IGNORES.each { |dir, pattern| `svn ps 'svn:ignore' '#{[pattern].flatten.join("\n")}' #{dir}` } # Commit the changes p 'Committing...' `svn up` `svn ci -m 'Setting svn:ignore on tmp files'` `svn up` p 'Done!'