class BundlerExt::System

Attributes

activate_versions[RW]
pkg_prefix[RW]

Public Class Methods

activate!(name) click to toggle source
# File lib/bundler_ext/system.rb, line 52
def self.activate!(name)
  begin
    sys_name = system_name_for(name)
    version  = system_version_for(sys_name)
    gem name, "=#{version}"
  rescue LoadError, Gem::Requirement::BadRequirementError
  end
end
activate?() click to toggle source
# File lib/bundler_ext/system.rb, line 18
def self.activate?
  parse_env
  # TODO support other package system activations, eg deb, homebrew, etc
  @activate_versions && self.is_rpm_system?
end
is_rpm_system?() click to toggle source
# File lib/bundler_ext/system.rb, line 29
def self.is_rpm_system?
  File.executable?(self.rpm_cmd)
end
parse_env() click to toggle source
# File lib/bundler_ext/system.rb, line 13
def self.parse_env
  @pkg_prefix        = ENV['BEXT_PKG_PREFIX'] || ''
  @activate_versions = ENV['BEXT_ACTIVATE_VERSIONS']
end
rpm_cmd(new_val=nil) click to toggle source
# File lib/bundler_ext/system.rb, line 33
def self.rpm_cmd(new_val=nil)
  @rpm_cmd ||= '/usr/bin/rpm'
  @rpm_cmd   = new_val unless new_val.nil?
  @rpm_cmd
end
system_name_for(name) click to toggle source
# File lib/bundler_ext/system.rb, line 24
def self.system_name_for(name)
  parse_env
  "#{@pkg_prefix}#{name}"
end
system_version_for(name) click to toggle source
# File lib/bundler_ext/system.rb, line 39
def self.system_version_for(name)
  if is_rpm_system?
    out = `#{rpm_cmd} -qi #{name}`
    version = out =~ /.*Version\s*:\s*([^\s]*)\s+.*/ ?
      $1 : nil
  else
    # TODO support debian, other platforms
    version = nil
  end

  version
end