Sha256: 7dba3a836329532498b41b123c81b8ea89dde10c752973cc9fc8ca7538d9999c

Contents?: true

Size: 1.4 KB

Versions: 83

Compression:

Stored size: 1.4 KB

Contents

require 'r10k/util/subprocess'
require 'r10k/util/setopts'

# Inspect and interact with SVN remote repositories
#
# @api private
# @since 1.3.0
class R10K::SVN::Remote

  include R10K::Util::Setopts

  def initialize(baseurl, opts = {})
    @baseurl = baseurl
    setopts(opts, {:username => :self, :password => :self})
  end

  # @todo validate that the path to trunk exists in the remote
  def trunk
    "#{@baseurl}/trunk"
  end

  # @todo gracefully handle cases where no branches exist
  def branches
    argv = ['ls', "#{@baseurl}/branches"]
    argv.concat(auth)
    text = svn(argv)
    text.lines.map do |line|
      line.chomp!
      line.gsub!(%r[/$], '')
      line
    end
  end

  private

  # Format authentication information for SVN command args, if applicable
  def auth
    auth = []
    if @username
      auth << "--username" << @username
      auth << "--password" << @password
    end
    auth
  end

  include R10K::Logging

  # Wrap SVN commands
  #
  # @param argv [Array<String>]
  # @param opts [Hash]
  #
  # @option opts [Pathname] :cwd The directory to run the command in
  #
  # @return [String] The stdout from the given command
  def svn(argv, opts = {})
    argv.unshift('svn', '--non-interactive')

    subproc = R10K::Util::Subprocess.new(argv)
    subproc.raise_on_fail = true
    subproc.logger = self.logger

    subproc.cwd = opts[:cwd]
    result = subproc.execute

    result.stdout
  end
end

Version data entries

83 entries across 83 versions & 2 rubygems

Version Path
r10k-5.0.0 lib/r10k/svn/remote.rb
r10k-4.1.0 lib/r10k/svn/remote.rb
r10k-4.0.2 lib/r10k/svn/remote.rb
r10k-4.0.1 lib/r10k/svn/remote.rb
r10k-4.0.0 lib/r10k/svn/remote.rb
r10k-4.0.0.pre lib/r10k/svn/remote.rb
r10k-3.16.0 lib/r10k/svn/remote.rb
r10k-3.15.4 lib/r10k/svn/remote.rb
r10k-3.15.3 lib/r10k/svn/remote.rb
r10k-3.15.2 lib/r10k/svn/remote.rb
r10k-3.15.1 lib/r10k/svn/remote.rb
r10k-3.15.0 lib/r10k/svn/remote.rb
akerl-r10k-3.14.2.1 lib/r10k/svn/remote.rb
r10k-3.14.2 lib/r10k/svn/remote.rb
r10k-3.14.1 lib/r10k/svn/remote.rb
r10k-3.14.0 lib/r10k/svn/remote.rb
r10k-3.13.0 lib/r10k/svn/remote.rb
r10k-3.12.1 lib/r10k/svn/remote.rb
r10k-3.12.0 lib/r10k/svn/remote.rb
r10k-3.11.0 lib/r10k/svn/remote.rb