Sha256: f05fd50557bd9540ed9ca52a852ec73fa5e2ffd8053b86b914d6e29bf80a4a31
Contents?: true
Size: 1.67 KB
Versions: 8
Compression:
Stored size: 1.67 KB
Contents
class Gratan::DSL::Context include Gratan::DSL::Validator include Gratan::Logger::Helper include Gratan::TemplateHelper 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 = {} @context = Hashie::Mash.new( :path => path, :options => options, :templates => {} ) instance_eval(&block) end private def template(name, &block) @context.templates[name.to_s] = block end 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(@context, name, host, @options, &block).result, :options => options, } end end end
Version data entries
8 entries across 8 versions & 1 rubygems