Class: Ansible::Ruby::Rake::Compile

Inherits:
Rake::TaskLib
  • Object
show all
Includes:
TaskUtil
Defined in:
lib/ansible/ruby/rake/compile.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from TaskUtil

#parse_params, #yaml_filenames

Constructor Details

#initialize(parameters = :default) {|_self| ... } ⇒ Compile

Returns a new instance of Compile.

Yields:

  • (_self)

Yield Parameters:



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/ansible/ruby/rake/compile.rb', line 17

def initialize(parameters = :default)
  self.class.load_rule
  name, deps = parse_params parameters
  yield self if block_given?
  raise 'You did not supply any files!' unless files && [*files].any?

  deps ||= []
  yml_filenames = yaml_filenames([*files])
  deps = [*deps] + yml_filenames
  task name => deps
end

Instance Attribute Details

#filesObject

:reek:Attribute - Rake DSL gets ugly if we don’t use a block



15
16
17
# File 'lib/ansible/ruby/rake/compile.rb', line 15

def files
  @files
end

Class Method Details

.load_ruleObject



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/ansible/ruby/rake/compile.rb', line 30

def load_rule
  return if @rule_done

  ::Rake.application.create_rule '.yml' => '.rb' do |filename|
    puts "Updating Ansible file #{filename.name} from #{filename.source}..."
    file_builder = Ansible::Ruby::DslBuilders::FileLevel.new
    exception = file_builder._handled_eval filename.source
    # Avoid lengthy stack trace
    raise exception if exception

    playbook = file_builder._result
    yml = Ansible::Ruby::Serializer.serialize playbook.to_h
    File.write filename.name, yml
  end
  @rule_done = true
end