Sha256: bfe2c81558b3336b19545129298a4271fde824df7b3e0dd82e6a14b78569d577

Contents?: true

Size: 1.26 KB

Versions: 2

Compression:

Stored size: 1.26 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="")
    if @require_valid_command
      return false unless valid_command_exists
    end

    command_parameters = command_parameters + " #{@parameters.join(' ')}"
    
    command = "\"#{@path_to_command}\" #{command_parameters}"
    @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

2 entries across 2 versions & 1 rubygems

Version Path
albacore-0.1.2 lib/albacore/support/runcommand.rb
albacore-0.1.1 lib/albacore/support/runcommand.rb