Sha256: a3cc6da3d0d1b427c467fffc56434155f4f579ce92469ded04cbcb8bc1ac710b

Contents?: true

Size: 1.6 KB

Versions: 2

Compression:

Stored size: 1.6 KB

Contents

require 'rbconfig'

class SystemWrapper

  # static method for use in defaults
  def self.windows?
    return ((RbConfig::CONFIG['host_os'] =~ /mswin|mingw/) ? true : false) if defined?(RbConfig)
    return ((Config::CONFIG['host_os'] =~ /mswin|mingw/) ? true : false)
  end

  # class method so as to be mockable for tests
  def windows?
    return SystemWrapper.windows?
  end

  def module_eval(string)
    return Object.module_eval("\"" + string + "\"")
  end

  def eval(string)
    return eval(string)
  end

  def search_paths
    return ENV['PATH'].split(File::PATH_SEPARATOR)
  end

  def cmdline_args
    return ARGV
  end

  def env_set(name, value)
    ENV[name] = value
  end

  def env_get(name)
    return ENV[name]
  end

  def time_now
    return Time.now.asctime
  end

  def shell_backticks(command, boom = true)
    retval = `#{command}`.freeze
    $exit_code = ($?.exitstatus).freeze if boom
    return {
      :output    => retval.freeze,
      :exit_code => ($?.exitstatus).freeze
    }
  end

  def shell_system(command, boom = true)
    system( command )
    $exit_code = ($?.exitstatus).freeze if boom
    return {
      :output    => "".freeze,
      :exit_code => ($?.exitstatus).freeze
    }
  end

  def add_load_path(path)
    $LOAD_PATH.unshift(path)
  end

  def require_file(path)
    require(path)
  end

  def ruby_success
    return ($exit_code == 0) && ($!.nil? || $!.is_a?(SystemExit) && $!.success?)
  end

  def constants_include?(item)
    # forcing to strings provides consistency across Ruby versions
    return Object.constants.map{|constant| constant.to_s}.include?(item.to_s)
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ceedling-0.27.0 lib/ceedling/system_wrapper.rb
ceedling-0.25.0 lib/ceedling/system_wrapper.rb