<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/spree/file_utilz.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -15,12 +15,52 @@ if ARGV.any? { |arg| %w(--version -v).any? { |flag| arg == flag } }
   exit 0
 end
 
-app_path = ARGV.first
-
 # 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 &quot;Updating to Spree #{Spree::Version} ...&quot;
+  APP_ROOT = Dir.pwd
+
+  # remove defunct file
+  sl = &quot;#{APP_ROOT}/config/initializers/searchlogic.rb&quot;; File.rename(sl, sl + '~') if File.exist?(sl)
+
+  # move session_store to new place in site initializer
+  site_extension_dir = &quot;#{APP_ROOT}/vendor/extensions/site/&quot;
+  session_store_file = &quot;config/initializers/session_store.rb&quot;
+  if File.exist?(site_extension_dir) &amp;&amp; File.exist?(&quot;#{APP_ROOT}/#{session_store_file}&quot;)
+    FileUtils.mkdir(site_extension_dir + &quot;/config&quot;) rescue ''
+    FileUtils.mkdir(site_extension_dir + &quot;/config/initializers&quot;) rescue ''
+    File.rename(&quot;#{APP_ROOT}/#{session_store_file}&quot;, &quot;#{site_extension_dir}/#{session_store_file}&quot;)
+  end
+
+  # copy the &quot;infrastructure&quot; files 
+  items = [ &quot;/public/javascripts&quot;, 
+            &quot;/public/stylesheets&quot;, 
+            &quot;/public/images&quot;, 
+            &quot;/config/initializers&quot;, 
+            &quot;/config/environments&quot;, 
+            &quot;/config/environment.rb&quot;, 
+            &quot;/config/spree_permissions.yml&quot;, 
+            &quot;/config/boot.rb&quot; ]
+  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(&quot;#{APP_ROOT}/#{session_store_file}&quot;)
+  end
+
+  puts &quot;Finished.&quot;
+  exit 0
+end
+
+app_path = ARGV.first
+
 require 'rails_generator'
 require 'rails_generator/scripts/generate'
 
@@ -36,6 +76,7 @@ class Rails::Generator::Base
     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:'</diff>
      <filename>bin/spree</filename>
    </modified>
    <modified>
      <diff>@@ -1,74 +1,3 @@
-require 'fileutils'
-require 'spree/extension'
-
-module Spree
-  class FileUtilz            
-    # A general purpose method to mirror a directory (+source+) into a destination
-    # directory, including all files and subdirectories. Files will not be mirrored
-    # if they are identical already (checked via FileUtils#identical?).
-    #
-    # Copyright (c) 2008 James Adam (The MIT License)
-    
-    # added: do mirroring with backup saving turned on
-    def self.mirror_with_backup(source, destination)
-      self.mirror_files(source, destination, true)
-    end 
-
-    def self.mirror_files(source, destination, create_backups = false)
-      # TODO: use Rake::FileList#pathmap?    
-      if File.directory?(source)
-        source_files  = Dir[source + &quot;/**/*&quot;]
-        source_dirs   = source_files.select { |d| File.directory?(d) }
-        source_files -= source_dirs
-      elsif File.exist? source
-        source_dirs   = []
-        source_files  = [source]
-        source        = File.dirname source
-      else
-        raise &quot;Could not mirror #{source} - entity does not exist&quot;
-      end
-    
-      unless source_files.empty?
-        base_target_dir = File.join(destination)
-        base_target_dir = File.dirname base_target_dir unless File.directory? base_target_dir
-        FileUtils.mkdir_p(base_target_dir)
-      end
-    
-      source_dirs.each do |dir|
-        # strip down these paths so we have simple, relative paths we can
-        # add to the destination
-        target_dir = File.join(base_target_dir, dir.gsub(source, ''))
-        begin        
-          FileUtils.mkdir_p(target_dir)
-        rescue Exception =&gt; e
-          raise &quot;Could not create directory #{target_dir}: \n&quot; + e
-        end
-      end
-    
-      source_files.each do |file|
-        begin
-          target = File.join(base_target_dir, file.gsub(source, ''))
-          unless File.exist?(target) &amp;&amp; self.same_contents(file, target)
-            # WAS FileUtils.identical?(file, target), but we want to test contents too
-            if create_backups &amp;&amp; File.exist?(target)
-              File.rename(target, target + '~') 
-            end
-            FileUtils.cp(file, target)
-          end 
-        rescue Exception =&gt; e
-          raise &quot;Could not copy #{file} to #{target}: \n&quot; + e 
-        end
-      end  
-    end   
-
-    # for windows users...
-    def self.same_contents(source,destination)
-      File.read(source) == File.read(destination)
-    end
-
-  end
-end
-
 # copy the assets from extensions public dir into #{RAILS_ROOT}/public
 destination = &quot;#{RAILS_ROOT}/public&quot;
 paths_to_mirror = Spree::ExtensionLoader.instance.load_extension_roots
@@ -84,5 +13,4 @@ paths_to_mirror.each do |extension_path|
       nil
     end
   end
-end  
-
+end
\ No newline at end of file</diff>
      <filename>lib/plugins/extension_patches/lib/asset_copy.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,35 +1,7 @@
 namespace :spree do
-  desc &quot;Assistance for upgrading an existing Spree deployment.  WARNING: Will replace certain javascript and stylesheet assets, but the replaced files are saved with a ~ suffix.&quot;
+  desc &quot;Assistance for upgrading an existing Spree deployment. (Deprecated)&quot;
   task :upgrade =&gt; :environment do
-    # remove defunct file
-    sl = &quot;#{RAILS_ROOT}/config/initializers/searchlogic.rb&quot;; File.rename(sl, sl + '~') if File.exist?(sl)
-
-    # move session_store to new place in site initializer
-    site_extension_dir = &quot;#{RAILS_ROOT}/vendor/extensions/site/&quot;
-    session_store_file = &quot;config/initializers/session_store.rb&quot;
-    if File.exist?(site_extension_dir) &amp;&amp; File.exist?(&quot;#{RAILS_ROOT}/#{session_store_file}&quot;)
-      FileUtils.mkdir(site_extension_dir + &quot;/config&quot;) rescue ''
-      FileUtils.mkdir(site_extension_dir + &quot;/config/initializers&quot;) rescue ''
-      File.rename(&quot;#{RAILS_ROOT}/#{session_store_file}&quot;, &quot;#{site_extension_dir}/#{session_store_file}&quot;)
-    end
-
-    # copy the &quot;infrastructure&quot; files 
-    items = [ &quot;/public/javascripts&quot;, 
-              &quot;/public/stylesheets&quot;, 
-              &quot;/public/images&quot;, 
-              &quot;/config/initializers&quot;, 
-              &quot;/config/environments&quot;, 
-              &quot;/config/environment.rb&quot;, 
-              &quot;/config/spree_permissions.yml&quot;, 
-              &quot;/config/boot.rb&quot; ]
-    items.each do |item|
-      Spree::FileUtilz.mirror_with_backup(SPREE_ROOT + item, RAILS_ROOT + item)
-    end
-
-    # discard copied session_store
-    if File.exist?(site_extension_dir)
-      FileUtils.rm(&quot;#{RAILS_ROOT}/#{session_store_file}&quot;)
-    end
+    puts &quot;This task has been deprecated.  Run 'spree upgrade' command using the newest gem instead.&quot;
   end
 end  
 </diff>
      <filename>lib/tasks/upgrade.rake</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>ecf03ea2222df7ada94a0c0549f4e0d41c988959</id>
    </parent>
  </parents>
  <author>
    <name>Sean Schofield</name>
    <email>sean@railsdog.com</email>
  </author>
  <url>http://github.com/schof/spree/commit/f0c49b5213b974b97dcb7a1d089264708329ebcd</url>
  <id>f0c49b5213b974b97dcb7a1d089264708329ebcd</id>
  <committed-date>2009-09-22T06:13:02-07:00</committed-date>
  <authored-date>2009-09-21T11:21:26-07:00</authored-date>
  <message>Replaced the 'rake spree:upgrade' task with a new 'spree --u' command to be run from the gem.

[#767 state:resolved]</message>
  <tree>d1786ae352fe45c4ab72ecf49b68962eb564d1e9</tree>
  <committer>
    <name>Sean Schofield</name>
    <email>sean@railsdog.com</email>
  </committer>
</commit>
