class Gitosis::Repository

Public Class Methods

new(&block) click to toggle source
# File lib/gitosis_easy_conf/repositories.rb, line 11
def initialize(&block)
  @base_config = EmptyConfig

  conf_file_name = Gitosis.config.filename
  @no_file_found = if conf_file_name.nil? or !File.exists?(conf_file_name)
                     @conffile = {}
                     true
                   else
                     @conffile = IniFile.new(conf_file_name)
                     false
                   end
  @conffile["gitosis"] = {}
  @origconffile = @conffile.clone

  @fork_name = Gitosis.config.fork_naming_convention || lambda do |repo,forker|
    "#{forker}_#{repo}"
  end

  instance_eval(&block)
end

Public Instance Methods

method_missing(method, *args, &block) click to toggle source
# File lib/gitosis_easy_conf/repositories.rb, line 42
def method_missing(method, *args, &block)
  args = [{}] if args.first.nil?
  repo_name = (args.first[:name] || method).to_sym

  committers = _get_keys([@base_config,args.first].map{|h| h[:writable]})
  @conffile["group #{repo_name}.writable"] = {
    'members'  => committers,
    'writable' => repo_name.to_s
  } unless committers == ""

  readers = _get_keys([@base_config,args.first].map{|h| h[:readable]})
  @conffile["group #{repo_name}.readonly"] = {
    'members'  => readers,
    'readonly' => repo_name.to_s
  } unless readers == ""

  [@base_config, args.first].map { |h| h[:forks] }.flatten.compact.
    collect { |a| a == :all ? Gitosis.forkers.all : a }.flatten.compact.each do |forker|

    fork_repo_name = @fork_name.call(repo_name,forker)

    @conffile["group fork.#{repo_name}.#{forker}.writable"] = {
      'members'  => ::Forker[forker],
      'writable' => fork_repo_name,
    }

    @conffile["group fork.#{repo_name}.#{forker}.readonly"] = {
      'members'  => readers,
      'readonly' => fork_repo_name,
    } unless readers == ""
  end
end
with_base_configuration(config,&block) click to toggle source
# File lib/gitosis_easy_conf/repositories.rb, line 36
def with_base_configuration(config,&block)
  @base_config = config || EmptyConfig
  instance_eval(&block)
  @base_config = EmptyConfig
end
write() click to toggle source
# File lib/gitosis_easy_conf/repositories.rb, line 32
def write
  @conffile.write unless @conffile.eql?(@origconffile) || @no_file_found
end

Private Instance Methods

_get_keys(ary) click to toggle source
# File lib/gitosis_easy_conf/repositories.rb, line 77
def _get_keys(ary)
  ary.flatten.compact.collect do |member|
    case member
    when String then member
    when Symbol then Gitosis.groups[member]
    else
      raise UnknownGroup, "Group '#{member}'"
    end
  end.flatten.join(' ')
end