X-Git-Url: https://git.openstreetmap.org/chef.git/blobdiff_plain/3a4b1c2078cd515e93a5f1bf8967f380fbd1646f..a439230240ac55952f5bbf40312c3116674a9cd5:/cookbooks/chef/libraries/subversion.rb?ds=sidebyside diff --git a/cookbooks/chef/libraries/subversion.rb b/cookbooks/chef/libraries/subversion.rb index 50b207ff8..dc84788a9 100644 --- a/cookbooks/chef/libraries/subversion.rb +++ b/cookbooks/chef/libraries/subversion.rb @@ -1,6 +1,10 @@ +require "chef/mixin/shell_out" + class Chef class Provider class Subversion + extend Chef::Mixin::ShellOut + def sync_command if current_repository_matches_target_repository? c = scm :update, @new_resource.svn_arguments, verbose, authentication, "-r#{revision_int}", @new_resource.destination @@ -13,36 +17,28 @@ class Chef end def current_repository - @current_repository ||= repo_attrs['URL'] + @current_repository ||= repo_attrs["URL"] end def current_repository_matches_target_repository? - (!current_repository.nil?) && (@new_resource.repository == current_repository) + !current_repository.nil? && (@new_resource.repository == current_repository) end def repo_attrs return {} unless ::File.exist?(::File.join(@new_resource.destination, ".svn")) - @repo_attrs ||= svn_info.lines.inject({}) do |attrs, line| - if line =~ SVN_INFO_PATTERN - property, value = $1, $2 - attrs[property] = value - else - raise "Could not parse `svn info` data: #{line}" - end - attrs + @repo_attrs ||= svn_info.lines.each_with_object({}) do |line, attrs| + raise "Could not parse `svn info` data: #{line}" unless line =~ SVN_INFO_PATTERN + + property = Regexp.last_match[1] + value = Regexp.last_match[2] + attrs[property] = value end end def svn_info command = scm(:info) - status, svn_info, error_message = output_of_command(command, run_options(:cwd => cwd)) - - unless [0, 1].include?(status.exitstatus) - handle_command_failures(status, "STDOUT: #{svn_info}\nSTDERR: #{error_message}") - end - - svn_info + shell_out!(command, run_options(:cwd => cwd)).stdout end end end