module PoiseLanguages::System::Mixin
Private Instance Methods
install_system_packages(&block)
click to toggle source
Install a language using system packages.
@api public @return [PoiseLanguages::System::Resource]
# File lib/poise_languages/system/mixin.rb, line 30 def install_system_packages(&block) dev_package_overrides = system_dev_package_overrides poise_languages_system system_package_name do # Otherwise use the default install action. action(:upgrade) if options['package_upgrade'] parent new_resource # Don't pass true because we want the default computed behavior for that. dev_package options['dev_package'] unless options['dev_package'] == true dev_package_overrides dev_package_overrides package_version options['package_version'] if options['package_version'] version options['version'] instance_exec(&block) if block end end
system_dev_package_overrides()
click to toggle source
A hash mapping package names to their override dev package name.
@api public @return [Hash<String, String>]
# File lib/poise_languages/system/mixin.rb, line 94 def system_dev_package_overrides {} end
system_package_candidates(version)
click to toggle source
Compute all possible package names for a given language version. Must be implemented by mixin users. Versions are expressed as prefixes so '' matches all versions, '2' matches 2.x.
@abstract @api public @param version [String] Language version prefix. @return [Array<String>]
# File lib/poise_languages/system/mixin.rb, line 64 def system_package_candidates(version) raise NotImplementedError end
system_package_name()
click to toggle source
Compute the default package name for the base package for this language.
@api public @return [String]
# File lib/poise_languages/system/mixin.rb, line 72 def system_package_name # If we have an override, just use that. return options['package_name'] if options['package_name'] # Look up all packages for this language on this platform. system_packages = self.class.packages && node.value_for_platform(self.class.packages) if !system_packages && self.class.default_package Chef::Log.debug("[#{new_resource}] No known packages for #{node['platform']} #{node['platform_version']}, defaulting to '#{self.class.default_package}'.") if self.class.packages system_packages = Array(self.class.default_package) end # Find the first value on system_package_candidates that is in system_packages. system_package_candidates(options['version'].to_s).each do |name| return name if system_packages.include?(name) end # No valid candidate. Sad trombone. raise PoiseLanguages::Error.new("Unable to find a candidate package for version #{options['version'].to_s.inspect}. Please set package_name provider option for #{new_resource}.") end
uninstall_system_packages(&block)
click to toggle source
Uninstall a language using system packages.
@api public @return [PoiseLanguages::System::Resource]
# File lib/poise_languages/system/mixin.rb, line 49 def uninstall_system_packages(&block) install_system_packages.tap do |r| r.action(:uninstall) r.instance_exec(&block) if block end end