Sha256: 8f63f7d6dc3ab1369ec12f51ffe9eff4dcb61b7f9fbf561728786888611134f5

Contents?: true

Size: 812 Bytes

Versions: 8

Compression:

Stored size: 812 Bytes

Contents

require 'terminal'

class Robocopy

	def initialize(tools_dir)
		@tools_dir = tools_dir
	end

    def execute(source, destination, parameters='/MIR /R:5 /W:5 /NP /NFL /NDL')
	    print_heading 'Copying'
		
		status = run_command("#{@tools_dir}/robocopy.exe #{source} #{destination} /XD .svn #{parameters}")
		failed = check_status(status)

		if failed
			raise RobocopyException, "Robocopy failed with status code #{status}. Please see http://bit.ly/dzegQL for what it means.".red
		end		
    end    

    private

    def check_status(status)
		fail = true
		
		[0, 1, 2, 3, 11].each do |code|
			if status == code
				fail = false
			end
		end

		fail
    end

	def run_command(text)
		sh(text) do |ok, result|
		    return result.exitstatus
	    end
	end
	
end

class RobocopyException < StandardError  
end 

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rakeoff-0.1.0 lib/rakeoff/robocopy.rb
rakeoff-0.0.9 lib/rakeoff/robocopy.rb
rakeoff-0.0.8 lib/rakeoff/robocopy.rb
rakeoff-0.0.7 lib/rakeoff/robocopy.rb
rakeoff-0.0.6 lib/rakeoff/robocopy.rb
rakeoff-0.0.5 lib/rakeoff/robocopy.rb
rakeoff-0.0.4 lib/rakeoff/robocopy.rb
rakeoff-0.0.3 lib/rakeoff/robocopy.rb