Included Modules

Files

Class/Module Index [+]

Quicksearch

Chef::Provider::Subversion

Constants

SVN_INFO_PATTERN

Public Instance Methods

action_checkout() click to toggle source
# File lib/chef/provider/subversion.rb, line 61
def action_checkout
  if target_dir_non_existent_or_empty?
    converge_by("perform checkout of #{@new_resource.repository} into #{@new_resource.destination}") do
      run_command(run_options(:command => checkout_command))
    end
  else
    Chef::Log.debug "#{@new_resource} checkout destination #{@new_resource.destination} already exists or is a non-empty directory - nothing to do"
  end
end
action_export() click to toggle source
# File lib/chef/provider/subversion.rb, line 71
def action_export
  if target_dir_non_existent_or_empty?
    action_force_export
  else
    Chef::Log.debug "#{@new_resource} export destination #{@new_resource.destination} already exists or is a non-empty directory - nothing to do"
  end
end
action_force_export() click to toggle source
# File lib/chef/provider/subversion.rb, line 79
def action_force_export
  converge_by("export #{@new_resource.repository} into #{@new_resource.destination}") do
    run_command(run_options(:command => export_command))
  end
end
action_sync() click to toggle source
# File lib/chef/provider/subversion.rb, line 85
def action_sync
  assert_target_directory_valid!
  if ::File.exist?(::File.join(@new_resource.destination, ".svn"))
    current_rev = find_current_revision
    Chef::Log.debug "#{@new_resource} current revision: #{current_rev} target revision: #{revision_int}"
    unless current_revision_matches_target_revision?
      converge_by("sync #{@new_resource.destination} from #{@new_resource.repository}") do
        run_command(run_options(:command => sync_command))
        Chef::Log.info "#{@new_resource} updated to revision: #{revision_int}"
      end
    end
  else
    action_checkout
  end
end
checkout_command() click to toggle source
# File lib/chef/provider/subversion.rb, line 107
def checkout_command
  c = scm :checkout, @new_resource.svn_arguments, verbose, authentication,
      "-r#{revision_int}", @new_resource.repository, @new_resource.destination
  Chef::Log.info "#{@new_resource} checked out #{@new_resource.repository} at revision #{@new_resource.revision} to #{@new_resource.destination}"
                          c
end
current_revision_matches_target_revision?() click to toggle source
# File lib/chef/provider/subversion.rb, line 152
def current_revision_matches_target_revision?
  (!@current_resource.revision.nil?) && (revision_int.strip.to_i == @current_resource.revision.strip.to_i)
end
define_resource_requirements() click to toggle source
# File lib/chef/provider/subversion.rb, line 49
def define_resource_requirements
  requirements.assert(:all_actions)  do |a|
    # Make sure the parent dir exists, or else fail.
    # for why run, print a message explaining the potential error.
    parent_directory = ::File.dirname(@new_resource.destination)
    a.assertion { ::File.directory?(parent_directory) }
    a.failure_message(Chef::Exceptions::MissingParentDirectory,
      "Cannot clone #{@new_resource} to #{@new_resource.destination}, the enclosing directory #{parent_directory} does not exist")
    a.whyrun("Directory #{parent_directory} does not exist, assuming it would have been created")
  end
end
export_command() click to toggle source
# File lib/chef/provider/subversion.rb, line 114
def export_command
  args = ["--force"]
  args << @new_resource.svn_arguments << verbose << authentication <<
      "-r#{revision_int}" << @new_resource.repository << @new_resource.destination
  c = scm :export, *args
  Chef::Log.info "#{@new_resource} exported #{@new_resource.repository} at revision #{@new_resource.revision} to #{@new_resource.destination}"
                          c
end
find_current_revision() click to toggle source
# File lib/chef/provider/subversion.rb, line 141
def find_current_revision
  return nil unless ::File.exist?(::File.join(@new_resource.destination, ".svn"))
  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
  extract_revision_info(svn_info)
end
load_current_resource() click to toggle source
# File lib/chef/provider/subversion.rb, line 39
def load_current_resource
  @current_resource = Chef::Resource::Subversion.new(@new_resource.name)

  unless [:export, :force_export].include?(Array(@new_resource.action).first)
    if current_revision = find_current_revision
      @current_resource.revision current_revision
    end
  end
end
revision_int() click to toggle source

If the specified revision isn’t an integer (“HEAD” for example), look up the revision id by asking the server If the specified revision is an integer, trust it.

# File lib/chef/provider/subversion.rb, line 126
def revision_int
  @revision_int ||= begin
    if @new_resource.revision =~ /^\d+$/
      @new_resource.revision
    else
      command = scm(:info, @new_resource.repository, @new_resource.svn_info_args, authentication, "-r#{@new_resource.revision}")
      status, svn_info, error_message = output_of_command(command, run_options)
      handle_command_failures(status, "STDOUT: #{svn_info}\nSTDERR: #{error_message}")
      extract_revision_info(svn_info)
    end
  end
end
Also aliased as: revision_slug
revision_slug() click to toggle source
Alias for: revision_int
run_options(run_opts={}) click to toggle source
# File lib/chef/provider/subversion.rb, line 156
def run_options(run_opts={})
  run_opts[:user] = @new_resource.user if @new_resource.user
  run_opts[:group] = @new_resource.group if @new_resource.group
  run_opts[:timeout] = @new_resource.timeout if @new_resource.timeout
  run_opts
end
sync_command() click to toggle source
# File lib/chef/provider/subversion.rb, line 101
def sync_command
  c = scm :update, @new_resource.svn_arguments, verbose, authentication, "-r#{revision_int}", @new_resource.destination
  Chef::Log.debug "#{@new_resource} updated working copy #{@new_resource.destination} to revision #{@new_resource.revision}"
                          c
end
whyrun_supported?() click to toggle source
# File lib/chef/provider/subversion.rb, line 35
def whyrun_supported?
  true
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.