Further repo browser/Dolt integration work
[gitorious:mainline.git] / lib / gitorious / dolt / repository_resolver.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 "libdolt"
19 require "presenters/repository_presenter"
20
21 module Gitorious
22   module Dolt
23     class Repository < ::Dolt::Git::Repository
24       attr_reader :meta
25
26       def initialize(repository)
27         @meta = RepositoryPresenter.new(repository)
28         super(repository.full_repository_path)
29       end
30     end
31
32     class RepositoryResolver
33       def initialize(scope = ::Repository)
34         @scope = scope
35       end
36
37       def resolve(repo)
38         repository = @scope.find_by_path(repo)
39         raise ActiveRecord::RecordNotFound.new if repository.nil?
40         Gitorious::Dolt::Repository.new(repository)
41       end
42     end
43   end
44 end