lib/change_agent/document.rb in change_agent-0.1.0 vs lib/change_agent/document.rb in change_agent-0.2.0

- old
+ new

@@ -17,55 +17,51 @@ def repo @client.repo end def contents - @contents ||= begin - tree = repo.head.target.tree - blob = repo.lookup tree.path(path)[:oid] - blob.content - end - rescue Rugged::ReferenceError, Rugged::TreeError - nil + @contents ||= blob_contents end - def write - clean_path + def changed? + contents != blob_contents + end + + def save oid = repo.write contents, :blob repo.index.add(path: path, oid: oid, mode: 0100644) Rugged::Commit.create repo, message: "Updating #{path}", parents: repo.empty? ? [] : [ repo.head.target ], tree: repo.index.write_tree(repo), update_ref: 'HEAD' end + alias_method :write, :save def delete(file=path) repo.index.remove(file) Rugged::Commit.create repo, message: "Removing #{path}", parents: [repo.head.target], tree: repo.index.write_tree(repo), update_ref: 'HEAD' + rescue Rugged::IndexError + false end def inspect "#<ChangeAgent::Document path=\"#{path}\">" end private - def clean_path - return if repo.empty? - dirs = [] + def blob_contents tree = repo.head.target.tree - path.split("/").each do |part| - file = dirs.push(part).join("/") - delete(file) if tree.path(file) - end - rescue Rugged::TreeError + blob = repo.lookup tree.path(path)[:oid] + blob.content + rescue Rugged::ReferenceError, Rugged::TreeError nil end end end