module Workspace

Public Class Methods

clone(url, path) click to toggle source
# File lib/git-ready/workspace.rb, line 24
def self.clone(url, path)
  credentials = Rugged::Credentials::SshKeyFromAgent.new username: 'git'
  Rugged::Repository.clone_at(url, path, credentials: credentials) unless git_repository? path
rescue Rugged::NetworkError
  Announce.failure "Failed to clone repository #{url} to path #{path}"
end
configure_remotes(path, origin_url, upstream_url) click to toggle source
# File lib/git-ready/workspace.rb, line 13
def self.configure_remotes(path, origin_url, upstream_url)
  repository = Rugged::Repository.new path
  repository.remotes.set_url 'origin', origin_url
  repository.remotes.set_url 'upstream', upstream_url
rescue Rugged::RepositoryError
  Announce.failure "Failed to configure remotes #{origin_url} and #{upstream_url} for #{path}"
rescue Rugged::OSError
  Announce.warning "#{path} does not exist"
end
git_repository?(path) click to toggle source
# File lib/git-ready/workspace.rb, line 8
def self.git_repository?(path)
  Dir.exist? "#{path}/.git"
end
setup(repositories) click to toggle source
# File lib/git-ready/workspace.rb, line 32
def self.setup(repositories)
  progress = ProgressBar.new repositories.length
  repositories.each do |repo|
    path = "#{Settings.workspace}/#{repo[:origin][:name]}"
    clone repo[:origin][:ssh_url], path
    configure_remotes path, repo[:origin][:ssh_url], repo[:upstream][:ssh_url]
    progress.increment!
  end
end