Sha256: 50aa818da9e73936686d363efdeee01c5a5f3df17fbfcd8334a8cb07799bdf3d

Contents?: true

Size: 1.07 KB

Versions: 13

Compression:

Stored size: 1.07 KB

Contents

class Gratan::Exporter
  def self.export(driver, options = {}, &block)
    self.new(driver, options).export(&block)
  end

  def initialize(driver, options = {})
    @driver = driver
    @options = options
  end

  def export
    grants = []

    @driver.each_user do |user, host|
      next if user =~ @options[:ignore_user]

      @driver.show_grants(user, host) do |stmt|
        grants << Gratan::GrantParser.parse(stmt)
      end
    end

    pack(grants)
  end

  private

  def pack(grants)
    packed = {}

    grants.each do |grant|
      user = grant.delete(:user)
      host = grant.delete(:host)
      user_host = [user, host]
      object = grant.delete(:object)
      identified = grant.delete(:identified)
      required = grant.delete(:require)

      packed[user_host] ||= {:objects => {}, :options => {}}
      packed[user_host][:objects][object] = grant
      packed[user_host][:options][:required] = required if required

      if @options[:with_identifier] and identified
        packed[user_host][:options][:identified] = identified
      end
    end

    packed
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
gratan-0.2.2 lib/gratan/exporter.rb
gratan-0.2.1 lib/gratan/exporter.rb
gratan-0.2.0 lib/gratan/exporter.rb
gratan-0.1.9 lib/gratan/exporter.rb
gratan-0.1.8 lib/gratan/exporter.rb
gratan-0.1.7 lib/gratan/exporter.rb
gratan-0.1.6 lib/gratan/exporter.rb
gratan-0.1.5 lib/gratan/exporter.rb
gratan-0.1.4 lib/gratan/exporter.rb
gratan-0.1.3 lib/gratan/exporter.rb
gratan-0.1.2 lib/gratan/exporter.rb
gratan-0.1.1 lib/gratan/exporter.rb
gratan-0.1.0 lib/gratan/exporter.rb