Class: Gitmain::Repository
- Inherits:
-
Object
- Object
- Gitmain::Repository
- Defined in:
- lib/gitmain/repository.rb
Instance Attribute Summary collapse
-
#branch ⇒ Object
readonly
Returns the value of attribute branch.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Class Method Summary collapse
Instance Method Summary collapse
- #checkout(branch) ⇒ Object
- #commit(klass: Gitmain::Commit) ⇒ Object
- #commit_id ⇒ Object
-
#initialize(name, branch = self.class.default_branch) ⇒ Repository
constructor
A new instance of Repository.
- #rename(name) ⇒ Object
- #rugged(id) ⇒ Object
- #setup? ⇒ Boolean
- #tree(klass: Gitmain::Tree) ⇒ Object
- #tree_id ⇒ Object
Constructor Details
#initialize(name, branch = self.class.default_branch) ⇒ Repository
Returns a new instance of Repository.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/gitmain/repository.rb', line 31 def initialize(name, branch = self.class.default_branch) raise ArgumentError, 'provide a valid name' unless name.match(/\A[\w\-]+\z/) raise ArgumentError, 'provide a valid branch' unless branch.match(/\A[\w\-]+\z/) begin @_repo = Rugged::Repository.new(File.join(self.class.dirname, "#{name}.git")) rescue raise ArgumentError, 'could not load repository' end unless @_repo. raise ArgumentError, 'must be a bare repository' end if @_repo.branches.each_name.include?(branch) @_branch = @_repo.branches[branch] elsif !@_repo.empty? raise ArgumentError, 'must provide an existing branch' end @name = name @branch = branch end |
Instance Attribute Details
#branch ⇒ Object (readonly)
Returns the value of attribute branch.
3 4 5 |
# File 'lib/gitmain/repository.rb', line 3 def branch @branch end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
3 4 5 |
# File 'lib/gitmain/repository.rb', line 3 def name @name end |
Class Method Details
.default_branch(value = nil) ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/gitmain/repository.rb', line 5 def self.default_branch(value = nil) @default_branch = value unless value.to_s.empty? if @default_branch.to_s.empty? 'master' else @default_branch end end |
.dirname(value = nil) ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'lib/gitmain/repository.rb', line 15 def self.dirname(value = nil) @dirname = value unless value.to_s.empty? if @dirname.to_s.empty? raise ArgumentError, 'provide a value to set @dirname' else @dirname end end |
.init(name) ⇒ Object
25 26 27 28 29 |
# File 'lib/gitmain/repository.rb', line 25 def self.init(name) raise ArgumentError, 'provide a valid name' unless name.match(/\A[\w\-]+\z/) Rugged::Repository.init_at(File.join(dirname, "#{name}.git"), :bare) new(name) end |
Instance Method Details
#checkout(branch) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/gitmain/repository.rb', line 63 def checkout(branch) if @_repo.branches.each_name.include?(branch) @_branch = @_repo.branches[branch] @branch = branch elsif @_repo.branches.each_name.include?(self.class.default_branch) @_branch = @_repo.branches.create(branch, self.class.default_branch) @branch = branch else raise ArgumentError, "default branch not yet setup" end end |
#commit(klass: Gitmain::Commit) ⇒ Object
55 56 57 |
# File 'lib/gitmain/repository.rb', line 55 def commit(klass: Gitmain::Commit) klass.new(self, commit_id) if commit_id end |
#commit_id ⇒ Object
59 60 61 |
# File 'lib/gitmain/repository.rb', line 59 def commit_id @_branch&.target&.oid end |
#rename(name) ⇒ Object
75 76 77 78 79 |
# File 'lib/gitmain/repository.rb', line 75 def rename(name) FileUtils.mv(File.join(self.class.dirname, "#@name.git"), File.join(self.class.dirname, "#{name}.git")) @_repo = Rugged::Repository.new(File.join(self.class.dirname, "#{name}.git")) @name = name end |
#rugged(id) ⇒ Object
81 82 83 |
# File 'lib/gitmain/repository.rb', line 81 def rugged(id) @_repo&.lookup(id) end |
#setup? ⇒ Boolean
85 86 87 |
# File 'lib/gitmain/repository.rb', line 85 def setup? @_repo && !@_repo.empty? && @_repo.branches[self.class.default_branch] end |
#tree(klass: Gitmain::Tree) ⇒ Object
89 90 91 |
# File 'lib/gitmain/repository.rb', line 89 def tree(klass: Gitmain::Tree) klass.new(self, tree_id) if tree_id end |
#tree_id ⇒ Object
93 94 95 |
# File 'lib/gitmain/repository.rb', line 93 def tree_id @_branch&.target&.tree_id end |