class GitoFigure

Constants

REPOS

Attributes

repo[RW]

Public Class Methods

administer(server, overrides={}) { |git| ... } click to toggle source
# File lib/gitofigure.rb, line 10
def self.administer(server, overrides={})
  ops = {:git_user => 'gitolite', :repo => 'gitolite-admin', :server => server}.merge overrides
  upstream_url = ops[:git_user] + '@' + ops[:server] + ':' + ops[:repo]
  local_path = File.join(REPOS, ops[:server])
  git = GitoFigure.new

  git.repo = Dir.exists?(local_path) ? Git.open(local_path) : Git.clone(upstream_url, ops[:server], :path => REPOS)

  if block_given?
    git.repo.pull
    yield git
    git.repo.push
  else
    return git
  end
end
new(ops={}) click to toggle source
# File lib/gitofigure.rb, line 6
def initialize(ops={})
  @repo = ops[:repo]
end

Public Instance Methods

authorize_keyfile(filename, msg=nil) click to toggle source
# File lib/gitofigure.rb, line 35
def authorize_keyfile(filename, msg=nil)
  msg = ["Added #{File.basename(filename)}", msg].join("\n")
  FileUtils.mv(filename, repo.dir.to_s + '/keydir')
  repo.add 'keydir'
  repo.commit(msg)
end
authorize_keys(hsh) click to toggle source
# File lib/gitofigure.rb, line 27
def authorize_keys(hsh)
  hsh.each do |name, key|
    filename = File.join('/', 'tmp', name.to_s + '.pub')
    File.open(filename, "w") {|f| f.write(key.to_s)}
    authorize_keyfile(filename)
  end
end