class SocialSnippet::Repository::Drivers::GitDriver
Attributes
rugged_repo[R]
Public Class Methods
is_git_uri(uri)
click to toggle source
# File lib/social_snippet/repository/drivers/git_driver.rb, line 83 def is_git_uri(uri) /git|https?/ === uri.scheme end
target_path?(path)
click to toggle source
# File lib/social_snippet/repository/drivers/git_driver.rb, line 87 def target_path?(path) ::File.directory?(path) && ::File.directory?(::File.join path, ".git") end
target_url?(url)
click to toggle source
# File lib/social_snippet/repository/drivers/git_driver.rb, line 78 def target_url?(url) uri = ::URI.parse(url) is_git_uri(uri) end
Public Instance Methods
current_ref()
click to toggle source
# File lib/social_snippet/repository/drivers/git_driver.rb, line 45 def current_ref rugged_repo.head.name.gsub /^refs\/heads\//, "" end
each_directory(ref) { |entry(join_path(parent, tree))| ... }
click to toggle source
# File lib/social_snippet/repository/drivers/git_driver.rb, line 25 def each_directory(ref, &block) rugged_ref(ref).target.tree.walk_trees do |parent, tree| yield ::SocialSnippet::Repository::Drivers::Entry.new(join_path(parent, tree[:name])) end end
each_file(ref) { |entry(join_path(parent, item), read_file(item))| ... }
click to toggle source
# File lib/social_snippet/repository/drivers/git_driver.rb, line 31 def each_file(ref, &block) rugged_ref(ref).target.tree.walk_blobs do |parent, item| yield ::SocialSnippet::Repository::Drivers::Entry.new(join_path(parent, item[:name]), read_file(item[:oid])) end end
fetch()
click to toggle source
# File lib/social_snippet/repository/drivers/git_driver.rb, line 7 def fetch dest_dir = ::Dir.mktmpdir @rugged_repo = ::Rugged::Repository.clone_at(url, dest_dir) end
join_path(a, b)
click to toggle source
# File lib/social_snippet/repository/drivers/git_driver.rb, line 37 def join_path(a, b) if a.empty? b else ::File.join a, b end end
read_file(oid)
click to toggle source
# File lib/social_snippet/repository/drivers/git_driver.rb, line 21 def read_file(oid) rugged_repo.lookup(oid).read_raw.data end
read_snippet_json()
click to toggle source
# File lib/social_snippet/repository/drivers/git_driver.rb, line 16 def read_snippet_json oid = rugged_repo.head.target.tree["snippet.json"][:oid] @snippet_json ||= ::JSON.parse rugged_repo.lookup(oid).read_raw.data end
refs()
click to toggle source
# File lib/social_snippet/repository/drivers/git_driver.rb, line 57 def refs all_refs = [] all_refs.concat remote_refs all_refs.concat tags all_refs end
remote_refs()
click to toggle source
# File lib/social_snippet/repository/drivers/git_driver.rb, line 64 def remote_refs rugged_repo.references.each("refs/remotes/origin/**/*").map do |r| r.name.match(/^refs\/remotes\/origin\/(.*)/)[1] end end
rev_hash(ref)
click to toggle source
# File lib/social_snippet/repository/drivers/git_driver.rb, line 53 def rev_hash(ref) rugged_ref(ref).target_id end
rugged_ref(ref_name)
click to toggle source
# File lib/social_snippet/repository/drivers/git_driver.rb, line 49 def rugged_ref(ref_name) rugged_repo.references.each("refs/*/#{ref_name}").first end
snippet_json()
click to toggle source
# File lib/social_snippet/repository/drivers/git_driver.rb, line 12 def snippet_json @snippet_json ||= read_snippet_json end