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