Class: Rexer::Definition::Dsl

Inherits:
Object
  • Object
show all
Defined in:
lib/rexer/definition/dsl.rb

Direct Known Subclasses

EnvDsl, Lock::Dsl

Defined Under Namespace

Classes: EnvDsl

Instance Method Summary collapse

Constructor Details

#initializeDsl

Returns a new instance of Dsl.



4
5
6
7
8
# File 'lib/rexer/definition/dsl.rb', line 4

def initialize
  @plugins = []
  @themes = []
  @env = :default
end

Instance Method Details

#env(*env_names, &dsl) ⇒ Object



35
36
37
38
39
40
41
42
# File 'lib/rexer/definition/dsl.rb', line 35

def env(*env_names, &dsl)
  env_names.each do |env_name|
    data = EnvDsl.new(env_name).tap { _1.instance_eval(&dsl) }.to_data

    @plugins += data.plugins
    @themes += data.themes
  end
end

#plugin(name, **opts, &hooks) ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/rexer/definition/dsl.rb', line 17

def plugin(name, **opts, &hooks)
  @plugins << Definition::Plugin.new(
    name: name,
    source: build_source(opts),
    hooks: build_hooks(hooks, %i[installed uninstalled]),
    env: @env
  )
end

#theme(name, **opts, &hooks) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/rexer/definition/dsl.rb', line 26

def theme(name, **opts, &hooks)
  @themes << Definition::Theme.new(
    name: name,
    source: build_source(opts),
    hooks: build_hooks(hooks, %i[installed uninstalled]),
    env: @env
  )
end

#to_dataObject



44
45
46
# File 'lib/rexer/definition/dsl.rb', line 44

def to_data
  Definition::Data.new(@plugins, @themes)
end