Sha256: 402244022f531e2ffd1b887afd7eb54ee08c1337dc97b3e6b9ab64aaccd53433

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

require 'albacore/support/failure'

module RunCommand
  extend AttrMethods
  include Failure
  
  attr_accessor :path_to_command, :require_valid_command, :command_directory
  attr_array :parameters
  
  def initialize
    @require_valid_command = true
    @command_directory = Dir.pwd
    @parameters = []
    super()
  end
  
  def run_command(command_name="Command Line", command_parameters=nil)
    if @require_valid_command
      return false unless valid_command_exists
    end

	@parameters = @parameters.push(command_parameters) unless command_parameters.nil?
    
    command = "\"#{@path_to_command}\" #{@parameters.join(' ')}"
    @logger.debug "Executing #{command_name}: #{command}"
    
    set_working_directory    
    result = system command
    reset_working_directory
    
    result
  end
  
  def valid_command_exists
    return true if File.exist?(@path_to_command || "")
    msg = "Command not found: #{@path_to_command}"
    @logger.fatal msg
  end
  
  def set_working_directory
    @original_directory = Dir.pwd
    return if @command_directory == @original_directory
    Dir.chdir(@command_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.1.3 lib/albacore/support/runcommand.rb