Class: Gitolite::Config::Repo
- Inherits:
-
Object
- Object
- Gitolite::Config::Repo
- Defined in:
- lib/gitolite/config/repo.rb
Overview
Represents a repo inside the gitolite configuration. The name, permissions, and git config options are all encapsulated in this class
Defined Under Namespace
Classes: InvalidPermissionError
Constant Summary collapse
- ALLOWED_PERMISSIONS =
/-|C|R|RW\+?(?:C?D?|D?C?)M?/
Instance Attribute Summary collapse
-
#config ⇒ Object
Returns the value of attribute config.
-
#description ⇒ Object
Returns the value of attribute description.
-
#name ⇒ Object
Returns the value of attribute name.
-
#options ⇒ Object
Returns the value of attribute options.
-
#owner ⇒ Object
Returns the value of attribute owner.
-
#permissions ⇒ Object
Returns the value of attribute permissions.
Instance Method Summary collapse
- #add_permission(perm, refex = "", *users) ⇒ Object
- #clean_permissions ⇒ Object
- #gitweb_description ⇒ Object
-
#initialize(name) ⇒ Repo
constructor
A new instance of Repo.
- #set_git_config(key, value) ⇒ Object
- #set_gitolite_option(key, value) ⇒ Object
- #to_s ⇒ Object
- #unset_git_config(key) ⇒ Object
- #unset_gitolite_option(key) ⇒ Object
Constructor Details
#initialize(name) ⇒ Repo
Returns a new instance of Repo.
12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/gitolite/config/repo.rb', line 12 def initialize(name) # Store the perm hash in a lambda since we have to create a new one on every deny rule # The perm hash is stored as a 2D hash, with individual permissions being the first # degree and individual refexes being the second degree. Both Hashes must respect order @perm_hash_lambda = lambda { Hash.new {|k,v| k[v] = Hash.new{|k2, v2| k2[v2] = [] }} } @permissions = Array.new.push(@perm_hash_lambda.call) @name = name @config = {} # git config @options = {} # gitolite config end |
Instance Attribute Details
#config ⇒ Object
Returns the value of attribute config.
10 11 12 |
# File 'lib/gitolite/config/repo.rb', line 10 def config @config end |
#description ⇒ Object
Returns the value of attribute description.
10 11 12 |
# File 'lib/gitolite/config/repo.rb', line 10 def description @description end |
#name ⇒ Object
Returns the value of attribute name.
10 11 12 |
# File 'lib/gitolite/config/repo.rb', line 10 def name @name end |
#options ⇒ Object
Returns the value of attribute options.
10 11 12 |
# File 'lib/gitolite/config/repo.rb', line 10 def @options end |
#owner ⇒ Object
Returns the value of attribute owner.
10 11 12 |
# File 'lib/gitolite/config/repo.rb', line 10 def owner @owner end |
#permissions ⇒ Object
Returns the value of attribute permissions.
10 11 12 |
# File 'lib/gitolite/config/repo.rb', line 10 def @permissions end |
Instance Method Details
#add_permission(perm, refex = "", *users) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/gitolite/config/repo.rb', line 30 def (perm, refex = "", *users) if perm =~ ALLOWED_PERMISSIONS #Handle deny rules if perm == '-' @permissions.push(@perm_hash_lambda.call) end @permissions.last[perm][refex].concat users.flatten @permissions.last[perm][refex].uniq! else raise InvalidPermissionError, "#{perm} is not in the allowed list of permissions!" end end |
#clean_permissions ⇒ Object
25 26 27 |
# File 'lib/gitolite/config/repo.rb', line 25 def @permissions = Array.new.push(@perm_hash_lambda.call) end |
#gitweb_description ⇒ Object
88 89 90 91 92 93 94 95 96 |
# File 'lib/gitolite/config/repo.rb', line 88 def gitweb_description if @description.nil? nil else desc = "#{@name} " desc += "\"#{@owner}\" " unless @owner.nil? desc += "= \"#{@description}\"" end end |
#set_git_config(key, value) ⇒ Object
45 46 47 |
# File 'lib/gitolite/config/repo.rb', line 45 def set_git_config(key, value) @config[key] = value end |
#set_gitolite_option(key, value) ⇒ Object
55 56 57 |
# File 'lib/gitolite/config/repo.rb', line 55 def set_gitolite_option(key, value) @options[key] = value end |
#to_s ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/gitolite/config/repo.rb', line 65 def to_s repo = "repo #{@name}\n" @permissions.each do |perm_hash| perm_hash.each do |perm, list| list.each do |refex, users| repo += " " + perm.ljust(6) + refex.ljust(25) + "= " + users.join(' ') + "\n" end end end @config.each do |k, v| repo += " config " + k + " = " + v.to_s + "\n" end @options.each do |k, v| repo += " option " + k + " = " + v.to_s + "\n" end repo end |
#unset_git_config(key) ⇒ Object
50 51 52 |
# File 'lib/gitolite/config/repo.rb', line 50 def unset_git_config(key) @config.delete(key) end |
#unset_gitolite_option(key) ⇒ Object
60 61 62 |
# File 'lib/gitolite/config/repo.rb', line 60 def unset_gitolite_option(key) @options.delete(key) end |