diff options
Diffstat (limited to 'lib/oxidized/output')
| -rw-r--r-- | lib/oxidized/output/git.rb | 43 | ||||
| -rw-r--r-- | lib/oxidized/output/output.rb | 5 | 
2 files changed, 34 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 diff --git a/lib/oxidized/output/output.rb b/lib/oxidized/output/output.rb index eaf149a..1355d03 100644 --- a/lib/oxidized/output/output.rb +++ b/lib/oxidized/output/output.rb @@ -1,5 +1,10 @@  module Oxidized    class Output      class NoConfig < OxidizedError; end + +    def cfg_to_str cfg +      cfg.select{ |h| h[:type]=='cfg' }.map{ |h| h[:data] }.join +    end +    end  end  | 
