Sha256: 4370e1b9d9bb563ebf08560fa13f8f84e92461bdf4a86a031fc1338627ac7383
Contents?: true
Size: 1.19 KB
Versions: 4
Compression:
Stored size: 1.19 KB
Contents
require 'contracts' require 'rugged' module Workspace include Contracts Contract String => Bool def self.git_repository?(path) true if Rugged::Repository.new path rescue Rugged::OSError, Rugged::RepositoryError false end Contract String, String, String => Any 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 end Contract String, String => Any 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 Contract ArrayOf[Hash] => Any 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 end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
git-ready-0.8.8 | lib/git-ready/workspace.rb |
git-ready-0.8.7 | lib/git-ready/workspace.rb |
git-ready-0.8.6 | lib/git-ready/workspace.rb |
git-ready-0.8.5 | lib/git-ready/workspace.rb |