class Quaker::GitResolver
Public Instance Methods
find_dir_for_repo(repo)
click to toggle source
# File lib/quaker/git_resolver.rb, line 20 def find_dir_for_repo repo dir = Dir.glob('*') .select {|f| File.directory? f} .select {|subdir| _stdin, stdout, _stderr = Open3.popen3("cd #{subdir} && git remote -v | awk '{print $2}'") stdout.each_line .map(&:strip) .map {|l| parse_url(l) } .include?(parse_url(repo)) } .first return nil unless dir "./#{dir}" end
parse_url(url)
click to toggle source
Parses repository url to { username: …, repository: …}
# File lib/quaker/git_resolver.rb, line 7 def parse_url url begin uri = GitCloneUrl.parse(url) if uri.path.match(/^\/?(.*?)\/(.*?)(.git)?$/) return { username: $1, repo: $2 } end rescue URI::InvalidComponentError $stderr.puts "ERROR: Invalid git url: #{url}" end url end
resolve(services_map)
click to toggle source
# File lib/quaker/git_resolver.rb, line 35 def resolve services_map for _, spec in services_map git_repo = spec.delete("git") next unless git_repo dir = find_dir_for_repo git_repo $stderr.puts "ERROR: Unable to find dir for repo #{git_repo}" and return unless dir spec["build"] = dir end services_map end