summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Bonds <scott@ggr.com>2014-11-03 13:48:08 -0800
committerLamont Granquist <lamont@scriptkiddie.org>2014-11-13 13:09:16 -0800
commit01da76c90f63de1012a1799e9a2921f042539ac9 (patch)
treea1dc5ec0a281c1e3020e6eb0c6ff6fc8cfe605ee
parent0379e1548b3777909ed43cffe15ccede3a501f04 (diff)
downloadchef-01da76c90f63de1012a1799e9a2921f042539ac9.tar.gz
add support for double-dash in package name
-rw-r--r--lib/chef/provider/package/openbsd.rb25
1 files changed, 21 insertions, 4 deletions
diff --git a/lib/chef/provider/package/openbsd.rb b/lib/chef/provider/package/openbsd.rb
index d0ff8684b6..476a9689f6 100644
--- a/lib/chef/provider/package/openbsd.rb
+++ b/lib/chef/provider/package/openbsd.rb
@@ -51,6 +51,9 @@ class Chef
unless @current_resource.version
version_string = ''
version_string += "-#{version}" if version
+ if parts = name.match(/^(.+?)--(.+)/)
+ name = parts[1]
+ end
if @new_resource.source =~ /\/$/
shell_out!("pkg_add -r #{name}#{version_string}", :env => { "PACKAGESITE" => @new_resource.source, 'LC_ALL' => nil }).status
else
@@ -63,22 +66,36 @@ class Chef
def remove_package(name, version)
version_string = ''
version_string += "-#{version}" if version
+ if parts = name.match(/^(.+?)--(.+)/)
+ name = parts[1]
+ end
shell_out!("pkg_delete #{name}#{version_string}", :env => nil).status
end
private
def installed_version
- pkg_info = shell_out!("pkg_info -e \"#{@new_resource.package_name}->0\"", :env => nil, :returns => [0,1])
- result = pkg_info.stdout[/^inst:#{Regexp.escape(@new_resource.package_name)}-(.+)/, 1]
+ if parts = @new_resource.package_name.match(/^(.+?)--(.+)/)
+ name = parts[1]
+ else
+ name = @new_resource.package_name
+ end
+ pkg_info = shell_out!("pkg_info -e \"#{name}->0\"", :env => nil, :returns => [0,1])
+ result = pkg_info.stdout[/^inst:#{Regexp.escape(name)}-(.+?)\s/, 1]
Chef::Log.debug("installed_version of '#{@new_resource.package_name}' is '#{result}'")
result
end
def candidate_version
@candidate_version ||= begin
- pkg_info = shell_out!("pkg_info -I \"#{@new_resource.package_name}\"", :env => nil, :returns => [0,1])
- result = pkg_info.stdout[/^#{Regexp.escape(@new_resource.package_name)}-(.+?)\s/, 1]
+ version_string = ''
+ version_string += "-#{version}" if @new_resource.version
+ pkg_info = shell_out!("pkg_info -I \"#{@new_resource.package_name}#{version_string}\"", :env => nil, :returns => [0,1])
+ if parts = @new_resource.package_name.match(/^(.+?)--(.+)/)
+ result = pkg_info.stdout[/^#{Regexp.escape(parts[1])}-(.+?)\s/, 1]
+ else
+ result = pkg_info.stdout[/^#{Regexp.escape(@new_resource.package_name)}-(.+?)\s/, 1]
+ end
Chef::Log.debug("candidate_version of '#{@new_resource.package_name}' is '#{result}'")
result
end