Class: Oxidized::Git

Inherits:
Output show all
Defined in:
lib/oxidized/output/git.rb

Instance Method Summary collapse

Constructor Details

#initializeGit

Returns a new instance of Git.



10
11
12
# File 'lib/oxidized/output/git.rb', line 10

def initialize
  @cfg = CFG.output.git
end

Instance Method Details

#fetch(node, group) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/oxidized/output/git.rb', line 41

def fetch node, group
  begin
    repo = @cfg.repo
    if group
      repo = File.join File.dirname(repo), group + '.git'
    end
    repo = Rugged::Repository.new repo
    index = repo.index
    index.read_tree repo.head.target.tree unless repo.empty?
    repo.read(index.get(node)[:oid]).data
  rescue
    'node not found'
  end
end

#setupObject



14
15
16
17
18
19
20
21
22
# File 'lib/oxidized/output/git.rb', line 14

def setup
  if @cfg.empty?
    CFGS.user.output.git.user  = 'Oxidized'
    CFGS.user.output.git.email = '[email protected]'
    CFGS.user.output.git.repo  =  File.join(Config::Root, 'oxidized.git')
    CFGS.save :user
    raise NoConfig, 'no output git config, edit ~/.config/oxidized/config'
  end
end

#store(file, data, opt = {}) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/oxidized/output/git.rb', line 24

def store file, data, opt={}
  msg   = opt[:msg]
  user  = (opt[:user]  or @cfg.user)
  email = (opt[:email] or @cfg.email)
  repo  = @cfg.repo
  if opt[:group]
    repo = File.join File.dirname(repo), opt[:group] + '.git'
  end
  begin
    repo = Rugged::Repository.new repo
    update_repo repo, file, data, msg, user, email
  rescue Rugged::OSError, Rugged::RepositoryError
    Rugged::Repository.init_at repo, :bare
    retry
  end
end