Sha256: 4af091deddd6771d4c906ab7d838c040257f7fb81171ea62e4546faa6b66b34f

Contents?: true

Size: 1.36 KB

Versions: 7

Compression:

Stored size: 1.36 KB

Contents

require 'albacore/support/albacore_helper'

class Robocopy
  include RunCommand
  include YAMLConfig
  include Logging

  attr_accessor :files, :directories, :destination, :mirror

  def initialize(env = @@env, executor = Executor.new)
    @env = env
    @files = []
    @directories = []
    @executor = executor
    @mirror = false
  end

  def execute()
    raise "No files or directories were specified" if @files.length == 0 and @directories.length == 0
    raise "Destination folder was not specified" if @destination.nil?

    copy = lambda { |type, collection|
      collection.each do |f|
        command = "#{@env.tools.robocopy} " + case type
          when 'file' then file_command(f, @destination)
          when 'directory' then directory_command(f, @destination)
          else raise "Unknown copy type"
        end
        command += " /MIR" if @mirror 

        Log.message("Copying #{f} #{destination}; #{command}", :info)
        @executor.run(command)
      end
    }

    copy.call('file', @files)
    copy.call('directory', @directories)
  end

  private

  def file_command(path, destination)
    "#{File.dirname(path)} #{destination} #{File.basename(path)}"
  end

  def directory_command(path, destination)
    "#{path} #{destination} /E"
  end
end

class Executor
  def run(command)
    %x[#{command}]
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
seabass-0.2.4 lib/seabass/robocopy.rb
seabass-0.2.2 lib/seabass/robocopy.rb
seabass-0.2.1 lib/seabass/robocopy.rb
seabass-0.2.0 lib/seabass/robocopy.rb
seabass-0.1.1 lib/seabass/robocopy.rb
seabass-0.1.0 lib/seabass/robocopy.rb
albacore-deployment-0.1.0 lib/albacore/deployment/robocopy.rb