class AvoDeploy::ScmProvider::BzrScmProvider

Public Class Methods

new(env) click to toggle source
Initializes the provider

 @param env [TaskExecutionEnvironment] Environment for the commands to be executed in

Calls superclass method
# File lib/avodeploy/scm_provider/bzr_scm_provider.rb, line 26
def initialize(env)
  super(env)
end

Public Instance Methods

checkout_from_remote(url, local_dir, branch, tag = nil) click to toggle source

Checks out repository code from a system and switches to the given branch

@param url [String] the repository location @param local_dir [String] path to the working copy @param branch [String] the branch to check out, not used here because branches are encoded in the bazaar urls @param tag [String] tag to check out

# File lib/avodeploy/scm_provider/bzr_scm_provider.rb, line 36
def checkout_from_remote(url, local_dir, branch, tag = nil)
  cmd = "bzr co --lightweight #{url} #{local_dir}"

  if tag.nil? == false
    cmd += " -r tag:#{tag}"
  end

  res = @env.command(cmd)
  raise RuntimeError, "Could not checkout from bzr url #{url}" unless res.retval == 0
end
cli_utils() click to toggle source

Returns the scm tools that have to be installed on specific systems

@return [Array] array of utilities

# File lib/avodeploy/scm_provider/bzr_scm_provider.rb, line 105
def cli_utils
  ['bzr']
end
diff_files_between_revisions(rev1, rev2) click to toggle source

Finds files that differ between two revisions and returns them as a array

@param rev1 [String] sha1 @param rev2 [String] sha1

@return [Array]

# File lib/avodeploy/scm_provider/bzr_scm_provider.rb, line 63
def diff_files_between_revisions(rev1, rev2)
  # same revision, nothing changed
  if rev1 == rev2
    return []
  end

  # exclude rev1 itself
  rev1 = rev1.to_i + 1

  res = @env.command("bzr log -r#{rev1}..#{rev2} -v --short")

  files = []

  res.stdout.lines.each do |line|
    line.strip!
    next unless line.start_with?('A') || line.start_with?('M')

    files << line[3, line.length]
  end

  files
end
revision() click to toggle source

Returns the current revision of the working copy

@return [String] the current revision of the working copy

# File lib/avodeploy/scm_provider/bzr_scm_provider.rb, line 50
def revision
  res = @env.command('bzr revno --tree')

  res.stdout.gsub("\n", '')
end
scm_files() click to toggle source

Returns scm files to be executed in the deployment process

@return [Array] array of scm control files

# File lib/avodeploy/scm_provider/bzr_scm_provider.rb, line 98
def scm_files
  ['.bzr', '.bzrignore']
end
unknown_files_in_workdir() click to toggle source

Finds files unknown file in the working directory and returns them as a array

@return [Array]

# File lib/avodeploy/scm_provider/bzr_scm_provider.rb, line 90
def unknown_files_in_workdir
  res = @env.command("bzr status --short | grep '^? ' | awk '/^? (.*)$/ {print $2}'")
  res.stdout.lines
end