Sha256: 39c0307a163c5abe7934afb83de79c50473262fa4159205aa548586ab8a7fc96

Contents?: true

Size: 1.22 KB

Versions: 1

Compression:

Stored size: 1.22 KB

Contents

require 'albacore/support/attrmethods'

module RunCommand
  extend AttrMethods
  
  attr_accessor :command, :working_directory
  attr_array :parameters
  
  def initialize
    @working_directory = Dir.pwd
    @parameters = []
    super()
  end
  
  def run_command(name="Command Line", parameters=nil)
    params = Array.new
    params << parameters unless parameters.nil?
    params << @parameters unless (@parameters.nil? || @parameters.length==0)
    
    cmd = get_command(params)
    @logger.debug "Executing #{name}: #{cmd}"
    
    set_working_directory
    result = system cmd
    reset_working_directory
    
    result
  end

  def get_command(params)
    cmd = "\"#{@command}\""
    cmd +=" #{params.join(' ')}" if params.length > 0
    cmd
  end

  def combine_parameters(params1, params2)
    combined = params1.collect
    combined = combined.push(params2) unless params2.nil?
    combined
  end
  
  def set_working_directory
    @original_directory = Dir.pwd
    return if @working_directory == @original_directory
    Dir.chdir(@working_directory)
  end
  
  def reset_working_directory
    return if Dir.pwd == @original_directory
    Dir.chdir(@original_directory)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
albacore-0.2.0.preview1 lib/albacore/support/runcommand.rb