summaryrefslogtreecommitdiff
path: root/lib/oxidized/output/git.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/oxidized/output/git.rb')
-rw-r--r--lib/oxidized/output/git.rb43
1 files changed, 29 insertions, 14 deletions
diff --git a/lib/oxidized/output/git.rb b/lib/oxidized/output/git.rb
index 18c2cc1..59b6bd4 100644
--- a/lib/oxidized/output/git.rb
+++ b/lib/oxidized/output/git.rb
@@ -20,23 +20,27 @@ class Git < Output
end
end
- 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
+ def store file, outputs, opt={}
+ data = outputs.to_cfg
+ @msg = opt[:msg]
+ @user = (opt[:user] or @cfg.user)
+ @email = (opt[:email] or @cfg.email)
+ @opt = opt
+ repo = @cfg.repo
+
+ outputs.types.each do |type|
+ next if type == 'cfg'
+ type_repo = File.join File.dirname(repo), type + '.git'
+ outputs.type(type).each do |output|
+ type_file = file + '--' + output[:name].strip.gsub(/\s+/, '_')
+ update type_repo, type_file, output[:output]
+ end
end
+
+ update repo, file, outputs.to_cfg
end
+
def fetch node, group
begin
repo = @cfg.repo
@@ -54,6 +58,17 @@ class Git < Output
private
+ def update repo, file, data
+ if @opt[:group]
+ repo = File.join File.dirname(repo), @opt[:group] + '.git'
+ end
+ 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
+
def update_repo repo, file, data, msg, user, email
oid = repo.write data, :blob
index = repo.index