summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-02-20 00:35:12 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-02-20 00:35:12 +0000
commit7a9e28ae0524663b96b994d70af44f0b361b7940 (patch)
tree901be99a87b5f65ea24006577ea45ef958b5d001
parent6fbd5fd3a581f116b9ec251b9f9e78ad36b792d3 (diff)
downloadpuppet-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.rb28
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)