X-Git-Url: https://git.openstreetmap.org/chef.git/blobdiff_plain/e11280b3d291a2be021d4c7bea3252d01547d447..a439230240ac55952f5bbf40312c3116674a9cd5:/cookbooks/chef/libraries/subversion.rb diff --git a/cookbooks/chef/libraries/subversion.rb b/cookbooks/chef/libraries/subversion.rb index b5ac6f301..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 @@ -17,32 +21,24 @@ class Chef 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.each_with_object({}) do |line, attrs| - if line =~ SVN_INFO_PATTERN - property = Regexp.last_match[1] - value = Regexp.last_match[2] - attrs[property] = value - else - fail "Could not parse `svn info` data: #{line}" - end + 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