diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-02-20 00:35:12 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-02-20 00:35:12 +0000 |
commit | 7a9e28ae0524663b96b994d70af44f0b361b7940 (patch) | |
tree | 901be99a87b5f65ea24006577ea45ef958b5d001 | |
parent | 6fbd5fd3a581f116b9ec251b9f9e78ad36b792d3 (diff) | |
download | puppet-7a9e28ae0524663b96b994d70af44f0b361b7940.tar.gz puppet-7a9e28ae0524663b96b994d70af44f0b361b7940.tar.xz puppet-7a9e28ae0524663b96b994d70af44f0b361b7940.zip |
Applying patch from #495.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2216 980ebf18-57e1-0310-9a29-db15c13687c0
-rw-r--r-- | lib/puppet/provider/package/portage.rb | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/lib/puppet/provider/package/portage.rb b/lib/puppet/provider/package/portage.rb index 95416acbd..4c1655495 100644 --- a/lib/puppet/provider/package/portage.rb +++ b/lib/puppet/provider/package/portage.rb @@ -5,20 +5,18 @@ Puppet::Type.type(:package).provide :portage do defaultfor :operatingsystem => :gentoo - def self.format - "{installedversionsshort}<category> <name> [<installedversionsshort>] [<best>] <homepage> <description>{}" - end - def self.list - search_format = /(\S+) (\S+) \[(.*)\] \[[^0-9]*([^\s:]*)(:\S*)?\] ([\S]*) (.*)/ + result_format = /(\S+) (\S+) \[(.*)\] \[[^0-9]*([^\s:]*)(:\S*)?\] ([\S]*) (.*)/ result_fields = [:category, :name, :ensure, :version_available, :slot, :vendor, :description] + search_format = "{installedversionsshort}<category> <name> [<installedversionsshort>] [<best>] <homepage> <description>{}" + begin - search_output = eix "--format", format() + search_output = eix "--nocolor", "--format", search_format packages = [] search_output.each do |search_result| - match = search_format.match( search_result ) + match = result_format.match( search_result ) if match package = {} @@ -62,18 +60,19 @@ Puppet::Type.type(:package).provide :portage do end def query - search_format = /(\S+) (\S+) \[(.*)\] \[[^0-9]*([^\s:]*)(:\S*)?\] ([\S]*) (.*)/ + result_format = /(\S+) (\S+) \[(.*)\] \[[^0-9]*([^\s:]*)(:\S*)?\] ([\S]*) (.*)/ result_fields = [:category, :name, :ensure, :version_available, :slot, :vendor, :description] - search_field = @model[:name].include?( '/' ) ? "--category-name" : "--name" - format = "<category> <name> [<installedversionsshort>] [<best>] <homepage> <description>" + search_field = @model[:category] ? "--category-name" : "--name" + search_value = @model[:category] ? package_name : @model[:name] + search_format = "<category> <name> [<installedversionsshort>] [<best>] <homepage> <description>" begin - search_output = eix "--format", format, "--exact", search_field, @model[:name] + search_output = eix "--nocolor", "--format", search_format, "--exact", search_field, search_value packages = [] search_output.each do |search_result| - match = search_format.match( search_result ) + match = result_format.match( search_result ) if( match ) package = {} @@ -89,11 +88,12 @@ Puppet::Type.type(:package).provide :portage do case packages.size when 0 - raise Puppet::PackageError.new("No package found with the specified name [#{@model[:name]}]") + not_found_value = "%s/%s" % [@model[:category] ? @model[:category] : "<unspecified category>", @model[:name]] + raise Puppet::PackageError.new("No package found with the specified name [#{not_found_value}]") when 1 return packages[0] else - raise Puppet::PackageError.new("More than one package with the specified name [#{@model[:name]}], please use category/name to disambiguate") + raise Puppet::PackageError.new("More than one package with the specified name [#{search_value}], please use the category parameter to disambiguate") end rescue Puppet::ExecutionFailure => detail raise Puppet::PackageError.new(detail) |