module PoiseLanguages::Scl::Mixin

Private Instance Methods

install_scl_package() click to toggle source
# File lib/poise_languages/scl/mixin.rb, line 25
def install_scl_package
  pkg = scl_package
  poise_languages_scl options[:package_name] || pkg[:name] do
    action :upgrade if options[:package_upgrade]
    dev_package options[:dev_package] == true ? pkg[:devel_name] : options[:dev_package]
    parent new_resource
    version options[:package_version]
  end
end
parse_enable_file(path, env={}) click to toggle source

Parse an SCL enable file to extract the environment variables set in it.

@param path [String] Path to the enable file. @return [Hash<String, String>]

# File lib/poise_languages/scl/mixin.rb, line 59
def parse_enable_file(path, env={})
  # Doesn't exist yet, so running Python will fail anyway. Just make sure
  # it fails in the expected way.
  return {} unless File.exist?(path)
  # Yes, this is a bash parser in regex. Feel free to be mad at me.
  IO.readlines(path).inject(env) do |memo, line|
    if match = line.match(/^export (\w+)=(.*)$/)
      memo[match[1]] = match[2].gsub(/\$(?:\{(\w+)(:\+:\$\{\w+\})?\}|(\w+))/) do
        key = $1 || $3
        value = (memo[key] || ENV[key]).to_s
        value = ":#{value}" if $2 && !value.empty?
        value
      end
    elsif match = line.match(/^\. scl_source enable (\w+)$/)
      # Parse another file.
      memo.update(parse_enable_file(::File.join('', 'opt', 'rh', match[1], 'enable'), memo))
    end
    memo
  end
end
scl_environment() click to toggle source
# File lib/poise_languages/scl/mixin.rb, line 51
def scl_environment
  parse_enable_file(::File.join(scl_folder, 'enable'))
end
scl_folder() click to toggle source
# File lib/poise_languages/scl/mixin.rb, line 47
def scl_folder
  ::File.join('', 'opt', 'rh', scl_package[:name])
end
scl_package() click to toggle source
# File lib/poise_languages/scl/mixin.rb, line 41
def scl_package
  @scl_package ||= self.class.find_scl_package(node, options['version']).tap do |p|
    raise PoiseLanguages::Error.new("No SCL repoistory package for #{node['platform']} #{node['platform_version']}") unless p
  end
end
uninstall_scl_package() click to toggle source
# File lib/poise_languages/scl/mixin.rb, line 35
def uninstall_scl_package
  install_scl_package.tap do |r|
    r.action(:uninstall)
  end
end