Class: HolePunch::DSL
Class Method Summary collapse
Instance Method Summary collapse
- #depends(id) ⇒ Object
- #eval_dsl(filename) ⇒ Object
- #group(id, &block) ⇒ Object
-
#initialize(env) ⇒ DSL
constructor
A new instance of DSL.
- #service(id, &block) ⇒ Object
Methods inherited from BaseDSL
Constructor Details
#initialize(env) ⇒ DSL
Returns a new instance of DSL.
99 100 101 |
# File 'lib/holepunch/dsl.rb', line 99 def initialize(env) super(env, Definition.new(env)) end |
Class Method Details
.evaluate(filename, env) ⇒ Object
90 91 92 93 94 95 96 97 |
# File 'lib/holepunch/dsl.rb', line 90 def self.evaluate(filename, env) path = Pathname.new(filename). unless path.file? raise SecurityGroupsFileNotFoundError, "#{filename} not found" end DSL.new(env).eval_dsl(filename) end |
Instance Method Details
#depends(id) ⇒ Object
111 112 113 114 115 116 |
# File 'lib/holepunch/dsl.rb', line 111 def depends(id) id = id.to_s raise GroupError, "duplicate group id #{id}" if @model.groups.include?(id) raise HolePunchSyntaxError, "dependency group #{id} cannot have a block" if block_given? @model.add_group(SecurityGroup.new(id, dependency: true)) end |
#eval_dsl(filename) ⇒ Object
103 104 105 106 107 108 109 |
# File 'lib/holepunch/dsl.rb', line 103 def eval_dsl(filename) super(filename) @model.validate! @model rescue SyntaxError => e raise SecurityGroupsFileError, "SecurityGroups syntax error #{e.message.gsub("#{filename.to_s}:", 'on line ')}" end |
#group(id, &block) ⇒ Object
118 119 120 121 122 |
# File 'lib/holepunch/dsl.rb', line 118 def group(id, &block) id = id.to_s raise GroupError, "duplicate group id #{id}" if @model.groups.include?(id) @model.add_group(GroupDSL.evaluate(@env, id, &block)) end |
#service(id, &block) ⇒ Object
124 125 126 127 |
# File 'lib/holepunch/dsl.rb', line 124 def service(id, &block) id = id.to_s @model.services[id] = ServiceDSL.evaluate(@env, id, &block) end |