Sha256: b6c8601c874d9079a19b7b14d192cfc14a9bd73ee54af3d59b35f439f86b2d65

Contents?: true

Size: 1.37 KB

Versions: 20

Compression:

Stored size: 1.37 KB

Contents

# frozen_string_literal: true
require_relative '../../../puppet/provider/package'

# OS X Packaging sucks.  We can install packages, but that's about it.
Puppet::Type.type(:package).provide :apple, :parent => Puppet::Provider::Package do
  desc "Package management based on OS X's built-in packaging system.  This is
    essentially the simplest and least functional package system in existence --
    it only supports installation; no deletion or upgrades.  The provider will
    automatically add the `.pkg` extension, so leave that off when specifying
    the package name."

  confine 'os.name' => :darwin
  commands :installer => "/usr/sbin/installer"

  def self.instances
    instance_by_name.collect do |name|
      self.new(
        :name     => name,
        :provider => :apple,
        :ensure   => :installed
      )
    end
  end

  def self.instance_by_name
    Dir.entries("/Library/Receipts").find_all { |f|
      f =~ /\.pkg$/
    }.collect { |f|
      name = f.sub(/\.pkg/, '')
      yield name if block_given?

      name
    }
  end

  def query
    Puppet::FileSystem.exist?("/Library/Receipts/#{@resource[:name]}.pkg") ? {:name => @resource[:name], :ensure => :present} : nil
  end

  def install
    source = @resource[:source]
    unless source
      self.fail _("Mac OS X packages must specify a package source")
    end

    installer "-pkg", source, "-target", "/"
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
puppet-8.3.0 lib/puppet/provider/package/apple.rb
puppet-8.3.0-x86-mingw32 lib/puppet/provider/package/apple.rb
puppet-8.3.0-x64-mingw32 lib/puppet/provider/package/apple.rb
puppet-8.3.0-universal-darwin lib/puppet/provider/package/apple.rb
puppet-8.3.1 lib/puppet/provider/package/apple.rb
puppet-8.3.1-x86-mingw32 lib/puppet/provider/package/apple.rb
puppet-8.3.1-x64-mingw32 lib/puppet/provider/package/apple.rb
puppet-8.3.1-universal-darwin lib/puppet/provider/package/apple.rb
puppet-8.2.0 lib/puppet/provider/package/apple.rb
puppet-8.2.0-x86-mingw32 lib/puppet/provider/package/apple.rb
puppet-8.2.0-x64-mingw32 lib/puppet/provider/package/apple.rb
puppet-8.2.0-universal-darwin lib/puppet/provider/package/apple.rb
puppet-8.1.0 lib/puppet/provider/package/apple.rb
puppet-8.1.0-x86-mingw32 lib/puppet/provider/package/apple.rb
puppet-8.1.0-x64-mingw32 lib/puppet/provider/package/apple.rb
puppet-8.1.0-universal-darwin lib/puppet/provider/package/apple.rb
puppet-8.0.1 lib/puppet/provider/package/apple.rb
puppet-8.0.1-x86-mingw32 lib/puppet/provider/package/apple.rb
puppet-8.0.1-x64-mingw32 lib/puppet/provider/package/apple.rb
puppet-8.0.1-universal-darwin lib/puppet/provider/package/apple.rb