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