lib/libdolt/git/repository.rb in libdolt-0.8.0 vs lib/libdolt/git/repository.rb in libdolt-0.9.0

- old
+ new

@@ -67,23 +67,35 @@ def log(ref, path, limit) entry_history(ref, path, limit) end def tree_history(ref, path, limit = 1) - d = When.defer - rp = rev_parse("#{ref}:#{path}") - rp.errback { |err| d.reject(err) } - rp.callback do |tree| - if tree.class != Rugged::Tree - message = "#{ref}:#{path} is not a tree (#{tree.class.to_s})" - break d.reject(Exception.new(message)) + When.defer do |d| + rp = rev_parse("#{ref}:#{path}") + rp.errback { |err| d.reject(err) } + rp.callback do |tree| + if tree.class != Rugged::Tree + message = "#{ref}:#{path} is not a tree (#{tree.class.to_s})" + break d.reject(Exception.new(message)) + end + + building = build_history(path || "./", ref, tree, limit) + building.callback { |history| d.resolve(history) } + building.errback { |err| d.reject(err) } end + end + end - building = build_history(path || "./", ref, tree, limit) - building.callback { |history| d.resolve(history) } - building.errback { |err| d.reject(err) } + def readme(ref) + When.defer do |d| + t = self.tree(ref, "") + t.callback do |tree| + d.resolve(tree.entries.select do |e| + e[:type] == :blob && e[:name].match(/readme/i) + end) + end + t.errback { |err| d.resolve([]) } end - d end private def entry_history(ref, entry, limit) deferred_method("log -n #{limit} #{ref} -- #{entry}") do |out, s|