Consistently use [path, ref], not [ref, path]
[gitorious:libdolt.git] / lib / dolt / repo_actions.rb
1 # encoding: utf-8
2 #--
3 #   Copyright (C) 2012 Gitorious AS
4 #
5 #   This program is free software: you can redistribute it and/or modify
6 #   it under the terms of the GNU Affero General Public License as published by
7 #   the Free Software Foundation, either version 3 of the License, or
8 #   (at your option) any later version.
9 #
10 #   This program is distributed in the hope that it will be useful,
11 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 #   GNU Affero General Public License for more details.
14 #
15 #   You should have received a copy of the GNU Affero General Public License
16 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 #++
18 require "eventmachine"
19
20 module Dolt
21   class RepoActions
22     def initialize(repo_resolver)
23       @repo_resolver = repo_resolver
24     end
25
26     def blob(repo, path, ref, &block)
27       repository = repo_resolver.resolve(repo)
28       d = repository.blob(path, ref)
29       d.callback do |blob, status|
30         block.call(nil, {
31                      :blob => blob,
32                      :repository => repository,
33                      :ref => ref })
34       end
35       d.errback { |err| block.call(err, nil) }
36     end
37
38     def tree(repo, path, ref, &block)
39       repository = repo_resolver.resolve(repo)
40       d = repository.tree(path, ref)
41       d.callback do |tree, status|
42         block.call(nil, {
43                      :tree => tree,
44                      :repository => repository,
45                      :ref => ref })
46       end
47       d.errback { |err| block.call(err, nil) }
48     end
49
50     private
51     def repo_resolver; @repo_resolver; end
52   end
53 end