class Gitload::RepoChain
Attributes
config[R]
repos[R]
Public Class Methods
new(config, repos = [], options = {})
click to toggle source
# File lib/gitload/repo_chain.rb, line 8 def initialize config, repos = [], options = {} @config = config @repos = repos @rename = options[:rename] end
Public Instance Methods
<<(repo)
click to toggle source
# File lib/gitload/repo_chain.rb, line 14 def << repo @repos << repo self end
add(repos)
click to toggle source
# File lib/gitload/repo_chain.rb, line 19 def add repos # TODO: remove repos = repos.repos while repos.respond_to? :repos @repos += repos self end
by(*owners)
click to toggle source
# File lib/gitload/repo_chain.rb, line 26 def by *owners normalized_owners = owners.collect{ |owner| owner.to_s.downcase } select{ |repo| normalized_owners.include? repo.owner.to_s.downcase } end
clone()
click to toggle source
# File lib/gitload/repo_chain.rb, line 73 def clone clone_into end
clone_into(dest = nil)
click to toggle source
# File lib/gitload/repo_chain.rb, line 81 def clone_into dest = nil clone_repos :into, dest end
clone_to(dest = nil)
click to toggle source
# File lib/gitload/repo_chain.rb, line 77 def clone_to dest = nil clone_repos :to, dest end
forks()
click to toggle source
# File lib/gitload/repo_chain.rb, line 51 def forks select &:fork? end
from(*sources)
click to toggle source
# File lib/gitload/repo_chain.rb, line 31 def from *sources select{ |repo| sources.include? repo.source } end
named(*criteria)
click to toggle source
# File lib/gitload/repo_chain.rb, line 35 def named *criteria compiled_criteria = criteria.collect do |criterion| if criterion.kind_of? Regexp Proc.new{ |repo| repo.name.match criterion } else Proc.new{ |repo| repo.name.downcase == criterion.to_s.downcase } end end select do |repo| compiled_criteria.any? do |criterion| criterion.call repo end end end
prefix(prefix)
click to toggle source
# File lib/gitload/repo_chain.rb, line 68 def prefix prefix @prefix = prefix self end
reject(&block)
click to toggle source
# File lib/gitload/repo_chain.rb, line 59 def reject &block dup @repos.reject(&block) end
rename(pattern = nil, replacement = nil, &block)
click to toggle source
# File lib/gitload/repo_chain.rb, line 63 def rename pattern = nil, replacement = nil, &block @rename_block = block || Proc.new{ |name| name.sub pattern, replacement } self end
select(&block)
click to toggle source
# File lib/gitload/repo_chain.rb, line 55 def select &block dup @repos.select(&block) end
Private Instance Methods
clone_repos(method, dest)
click to toggle source
# File lib/gitload/repo_chain.rb, line 93 def clone_repos method, dest dest = if !dest File.expand_path(root.to_s) elsif root File.expand_path(dest.to_s, File.expand_path(root.to_s)) else File.expand_path(dest.to_s) end puts dest dir = File.dirname dest #FileUtils.mkdir_p unless File.exists? dir @repos.each do |repo| repo_dest = if method == :into name = repo.name name = name.index(@prefix) == 0 ? name : "#{@prefix}#{name}" if @prefix name = @rename_block.call name if @rename_block File.join dest, name else dest end repo.clone_to repo_dest, @config.clone_options end end
dup(repos = nil)
click to toggle source
# File lib/gitload/repo_chain.rb, line 89 def dup repos = nil RepoChain.new @config, repos || @repos, rename: @rename end