lib/gitolite/config/repo.rb in jbox-gitolite-1.2.0 vs lib/gitolite/config/repo.rb in jbox-gitolite-1.2.1

- old
+ new

@@ -1,30 +1,34 @@ module Gitolite class Config - #Represents a repo inside the gitolite configuration. The name, permissions, and git config - #options are all encapsulated in this class + + # Represents a repo inside the gitolite configuration. The name, permissions, and git config + # options are all encapsulated in this class class Repo + ALLOWED_PERMISSIONS = /-|C|R|RW\+?(?:C?D?|D?C?)M?/ attr_accessor :permissions, :name, :config, :options, :owner, :description 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 + # 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 + @config = {} # git config + @options = {} # gitolite config end + def clean_permissions @permissions = Array.new.push(@perm_hash_lambda.call) end + def add_permission(perm, refex = "", *users) if perm =~ ALLOWED_PERMISSIONS #Handle deny rules if perm == '-' @permissions.push(@perm_hash_lambda.call) @@ -35,26 +39,31 @@ else raise InvalidPermissionError, "#{perm} is not in the allowed list of permissions!" end end + def set_git_config(key, value) @config[key] = value end + def unset_git_config(key) @config.delete(key) end + def set_gitolite_option(key, value) @options[key] = value end + def unset_gitolite_option(key) @options.delete(key) end + def to_s repo = "repo #{@name}\n" @permissions.each do |perm_hash| perm_hash.each do |perm, list| @@ -73,22 +82,26 @@ end repo end + def gitweb_description if @description.nil? nil else desc = "#{@name} " desc += "\"#{@owner}\" " unless @owner.nil? desc += "= \"#{@description}\"" end end - #Gets raised if a permission that isn't in the allowed - #list is passed in + + # Gets raised if a permission that isn't in the allowed + # list is passed in class InvalidPermissionError < ArgumentError end + end + end end