Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sacrifice:~/chef/chef# git diff
- diff --git a/chef/lib/chef/config.rb b/chef/lib/chef/config.rb
- index 83b28d3..b02054e 100644
- --- a/chef/lib/chef/config.rb
- +++ b/chef/lib/chef/config.rb
- @@ -96,6 +96,7 @@ class Chef
- executable_path ENV['PATH'] ? ENV['PATH'].split(File::PATH_SEPARATOR) : []
- file_cache_path "/var/chef/cache"
- file_store_path "/var/chef/store"
- + file_backup_path nil
- group nil
- http_retry_count 5
- http_retry_delay 5
- diff --git a/chef/lib/chef/provider/file.rb b/chef/lib/chef/provider/file.rb
- index 4b6cc7c..e8955d6 100644
- --- a/chef/lib/chef/provider/file.rb
- +++ b/chef/lib/chef/provider/file.rb
- @@ -165,12 +165,16 @@ class Chef
- time = Time.now
- savetime = time.strftime("%Y%m%d%H%M%S")
- backup_filename = "#{@new_resource.path}.chef-#{savetime}"
- + prefix = Chef::Config[:file_backup_path] || ""
- + if Chef::Config[:file_backup_path]
- + FileUtils.mkdir_p(::File.dirname(Chef::Config[:file_backup_path] + backup_filename))
- + end
- Chef::Log.info("Backing up #{@new_resource} to #{backup_filename}")
- - FileUtils.cp(file, backup_filename)
- + FileUtils.cp(file, prefix + backup_filename)
- # Clean up after the number of backups
- slice_number = @new_resource.backup - 1
- - backup_files = Dir["#{@new_resource.path}.chef-*"].sort { |a,b| b <=> a }
- + backup_files = Dir[prefix + "#{@new_resource.path}.chef-*"].sort { |a,b| b <=> a }
- if backup_files.length >= @new_resource.backup
- remainder = backup_files.slice(slice_number..-1)
- remainder.each do |backup_to_delete|
- diff --git a/chef/spec/unit/provider/file_spec.rb b/chef/spec/unit/provider/file_spec.rb
- index ceff5b7..e8e0d5d 100644
- --- a/chef/spec/unit/provider/file_spec.rb
- +++ b/chef/spec/unit/provider/file_spec.rb
- @@ -246,6 +246,19 @@ describe Chef::Provider::File do
- FileUtils.should_not_receive(:cp)
- @provider.backup
- end
- + it "should put the backup backup file in the directory specified by Chef::Config[:file_backup_path]" do
- + @provider.load_current_resource
- + @provider.new_resource.stub!(:path).and_return("/tmp/s-20080705111233")
- + @provider.new_resource.stub!(:backup).and_return(2)
- + Chef::Config.stub!(:[]).with(:file_backup_path).and_return("/some_prefix")
- + Dir.stub!(:[]).and_return([ "/some_prefix/tmp/s-20080705111233", "/some_prefix/tmp/s-20080705111232", "/som
- + FileUtils.should_receive(:mkdir_p).with("/some_prefix/tmp").once
- + FileUtils.should_receive(:rm).with("/some_prefix/tmp/s-20080705111232").once.and_return(true)
- + FileUtils.should_receive(:rm).with("/some_prefix/tmp/s-20080705111223").once.and_return(true)
- + FileUtils.stub!(:cp).and_return(true)
- + File.stub!(:exist?).and_return(true)
- + @provider.backup
- + end
- end
- describe Chef::Provider::File, "action_create_if_missing" do
Add Comment
Please, Sign In to add comment