#!/usr/bin/env ruby require File.join(File.dirname(__FILE__), '..', 'config', 'boot') $LOAD_PATH << File.join(File.dirname(__FILE__), '..') require 'rubygems' gem 'rails' require 'ruby_version_check' Signal.trap("INT") { puts; exit } require 'lib/spree' if ARGV.any? { |arg| %w(--version -v).any? { |flag| arg == flag } } puts "Spree #{Spree::Version}" exit 0 end # configuration must be set or we get uninitialized class variable @@configuration (introduced w/rails 2.1) require 'spree/initializer' Rails.configuration = Spree::Configuration.new # Upddate will replace certain javascript, stylesheet assets, etc. but the replaced files are preserved with a ~ suffix. require 'spree/file_utilz' if ARGV.any? { |arg| %w(--update -u).any? { |flag| arg == flag } } puts "Updating to Spree #{Spree::Version} ..." APP_ROOT = Dir.pwd # remove defunct file sl = "#{APP_ROOT}/config/initializers/searchlogic.rb"; File.rename(sl, sl + '~') if File.exist?(sl) # move session_store to new place in site initializer site_extension_dir = "#{APP_ROOT}/vendor/extensions/site/" session_store_file = "config/initializers/session_store.rb" if File.exist?(site_extension_dir) && File.exist?("#{APP_ROOT}/#{session_store_file}") FileUtils.mkdir(site_extension_dir + "/config") rescue '' FileUtils.mkdir(site_extension_dir + "/config/initializers") rescue '' File.rename("#{APP_ROOT}/#{session_store_file}", "#{site_extension_dir}/#{session_store_file}") end # copy the "infrastructure" files items = [ "/public/javascripts", "/public/stylesheets", "/public/images", "/config/initializers", "/config/environments", "/config/environment.rb", "/config/spree_permissions.yml", "/config/boot.rb" ] items.each do |item| Spree::FileUtilz.mirror_with_backup(SPREE_ROOT + item, APP_ROOT + item) end # discard copied session_store if File.exist?(site_extension_dir) FileUtils.rm("#{APP_ROOT}/#{session_store_file}") end puts "Finished." exit 0 end app_path = ARGV.first require 'rails_generator' require 'rails_generator/scripts/generate' class Rails::Generator::Base def self.use_application_sources! reset_sources sources << Rails::Generator::PathSource.new(:builtin, "#{File.dirname(__FILE__)}/../lib/generators") end def add_general_options!(opt) opt.separator '' opt.separator 'Spree Info:' opt.on('-v', '--version', 'Show the Spree version number and quit.') opt.on('-h', '--help', 'Show this help message and quit.') { |v| options[:help] = v } opt.on('-u', '--update', 'Update an existing Spree project to the newest gem version.') opt.separator '' opt.separator 'General Options:' opt.on('-p', '--pretend', 'Run but do not make any changes.') { |v| options[:pretend] = v } opt.on('-f', '--force', 'Overwrite files that already exist.') { options[:collision] = :force } opt.on('-s', '--skip', 'Skip files that already exist.') { options[:collision] = :skip } opt.on('-q', '--quiet', 'Suppress normal output.') { |v| options[:quiet] = v } opt.on('-t', '--backtrace', 'Debugging: show backtrace on errors.') { |v| options[:backtrace] = v } opt.on('-m', '--demo', 'Creates special mongrel configuration needed for demo server (unlikely you will need this).') { |v| options[:demo] = v } end end Rails::Generator::Base.use_application_sources! Rails::Generator::Scripts::Generate.new.run(ARGV, :generator => 'instance')