Class: BundlerExt::System

Inherits:
Object
  • Object
show all
Defined in:
lib/bundler_ext/system.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.activate_versionsObject

Returns the value of attribute activate_versions.



10
11
12
# File 'lib/bundler_ext/system.rb', line 10

def activate_versions
  @activate_versions
end

.pkg_prefixObject

Returns the value of attribute pkg_prefix.



9
10
11
# File 'lib/bundler_ext/system.rb', line 9

def pkg_prefix
  @pkg_prefix
end

Class Method Details

.activate!(name) ⇒ Object



52
53
54
55
56
57
58
59
# 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?Boolean

Returns:

  • (Boolean)


18
19
20
21
22
# 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?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/bundler_ext/system.rb', line 29

def self.is_rpm_system?
  File.executable?(self.rpm_cmd)
end

.parse_envObject



13
14
15
16
# 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) ⇒ Object



33
34
35
36
37
# 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) ⇒ Object



24
25
26
27
# File 'lib/bundler_ext/system.rb', line 24

def self.system_name_for(name)
  parse_env
  "#{@pkg_prefix}#{name}"
end

.system_version_for(name) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
# 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