diff options
author | Scott Bonds <scott@ggr.com> | 2014-11-03 13:48:08 -0800 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2014-11-13 13:09:16 -0800 |
commit | 01da76c90f63de1012a1799e9a2921f042539ac9 (patch) | |
tree | a1dc5ec0a281c1e3020e6eb0c6ff6fc8cfe605ee | |
parent | 0379e1548b3777909ed43cffe15ccede3a501f04 (diff) | |
download | chef-01da76c90f63de1012a1799e9a2921f042539ac9.tar.gz |
add support for double-dash in package name
-rw-r--r-- | lib/chef/provider/package/openbsd.rb | 25 |
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 |