Juerg--

Patch #01 of this series doesn't seem to have made it to the list properly.
 Can you re-send?

Thanks,

Paul

On Mon, Feb 21, 2011 at 5:26 PM, Juerg Walz <[email protected]> wrote:

> From: Maciej Blizinski <[email protected]>
>
>
> Signed-off-by: Juerg Walz <[email protected]>
> ---
> Local-branch: tickets/master/4258-dev
>  lib/puppet/provider/package/pkgutil.rb |  111
> ++++++++++++++++++++++++++++++++
>  1 files changed, 111 insertions(+), 0 deletions(-)
>  create mode 100755 lib/puppet/provider/package/pkgutil.rb
>
> diff --git a/lib/puppet/provider/package/pkgutil.rb
> b/lib/puppet/provider/package/pkgutil.rb
> new file mode 100755
> index 0000000..cde7482
> --- /dev/null
> +++ b/lib/puppet/provider/package/pkgutil.rb
> @@ -0,0 +1,111 @@
> +# Packaging using pkgutil from http://pkgutil.wikidot.com/
> +Puppet::Type.type(:package).provide :pkgutil, :parent => :sun, :source =>
> :sun do
> +    desc "Package management using ``pkgutil`` command on Solaris."
> +    pkgutil = "pkgutil"
> +    if FileTest.executable?("/opt/csw/bin/pkgutil")
> +        pkgutil = "/opt/csw/bin/pkgutil"
> +    end
> +
> +    confine :operatingsystem => :solaris
> +
> +    commands :pkgutil => pkgutil
> +
> +    # This is so stupid, but then, so is Solaris.
> +    ENV["PAGER"] = "/usr/bin/cat"
> +
> +    def self.extended(mod)
> +        unless command(:pkgutil) != "pkgutil"
> +            raise Puppet::Error,
> +                "The pkgutil command is missing; pkgutil packaging
> unavailable"
> +        end
> +    end
> +
> +    def self.instances(hash = {})
> +        blastlist(hash).collect do |bhash|
> +            bhash.delete(:avail)
> +            new(bhash)
> +        end
> +    end
> +
> +    # Turn our pkgutil listing into a bunch of hashes.
> +    def self.blastlist(hash)
> +        command = ["-c"]
> +
> +        if hash[:justme]
> +            command << hash[:justme]
> +        end
> +
> +        output = pkgutil command
> +
> +        list = output.split("\n").collect do |line|
> +            next if line =~ /^#/
> +            next if line =~ /^WARNING/
> +            next if line =~ /localrev\s+remoterev/
> +
> +            blastsplit(line)
> +        end.reject { |h| h.nil? }
> +
> +        if hash[:justme]
> +            return list[0]
> +        else
> +            list.reject! { |h|
> +                h[:ensure] == :absent
> +            }
> +            return list
> +        end
> +
> +    end
> +
> +    # Split the different lines into hashes.
> +    def self.blastsplit(line)
> +        if line =~ /\s*(\S+)\s+((\[Not installed\])|(\S+))\s+(\S+)/
> +            hash = {}
> +            hash[:name] = $1
> +            hash[:ensure] = if $2 == "[Not installed]"
> +                :absent
> +            else
> +                $2
> +            end
> +            hash[:avail] = $5
> +
> +            if hash[:avail] == "SAME"
> +                hash[:avail] = hash[:ensure]
> +            end
> +
> +            # Use the name method, so it works with subclasses.
> +            hash[:provider] = self.name
> +
> +            return hash
> +        else
> +            Puppet.warning "Cannot match %s" % line
> +            return nil
> +        end
> +    end
> +
> +    def install
> +        pkgutil "-y", "--install", @resource[:name]
> +    end
> +
> +    # Retrieve the version from the current package file.
> +    def latest
> +        hash = self.class.blastlist(:justme => @resource[:name])
> +        hash[:avail]
> +    end
> +
> +    def query
> +        if hash = self.class.blastlist(:justme => @resource[:name])
> +            hash
> +        else
> +            {:ensure => :absent}
> +        end
> +    end
> +
> +    # Remove the old package, and install the new one
> +    def update
> +        pkgutil "-y", "--upgrade", @resource[:name]
> +    end
> +
> +    def uninstall
> +        pkgutil "-y", "--remove", @resource[:name]
> +    end
> +end
> --
> 1.7.3.2
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Developers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/puppet-dev?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to