Sha256: 60ed7d0126a43c58a9b207704f79e7a9ef220280628c36f5ad92c75f9d61791c
Contents?: true
Size: 1.45 KB
Versions: 18
Compression:
Stored size: 1.45 KB
Contents
class Gratan::DSL::Context include Gratan::DSL::Validator include Gratan::Logger::Helper def self.eval(dsl, path, options = {}) self.new(path, options) do eval(dsl, binding, path) end end attr_reader :result def initialize(path, options = {}, &block) @path = path @options = options @result = {} instance_eval(&block) end private def require(file) grantfile = (file =~ %r|\A/|) ? file : File.expand_path(File.join(File.dirname(@path), file)) if File.exist?(grantfile) instance_eval(File.read(grantfile), grantfile) elsif File.exist?(grantfile + '.rb') instance_eval(File.read(grantfile + '.rb'), grantfile + '.rb') else Kernel.require(file) end end def user(name, host_or_array, options = {}, &block) name = name.to_s hosts = [host_or_array].flatten.map {|i| i.to_s } hosts.each do |host| options ||= {} __validate("User `#{name}@#{host}` is already defined") do not @result.has_key?([name, host]) end if @options[:enable_expired] and (expired = options.delete(:expired)) expired = Time.parse(expired) if Time.new >= expired log(:warn, "User `#{name}@#{host}` has expired", :color => :yellow) return end end @result[[name, host]] = { :objects => Gratan::DSL::Context::User.new(name, host, @options, &block).result, :options => options, } end end end
Version data entries
18 entries across 18 versions & 1 rubygems