Class: Buildserver::Buildserver

Inherits:
Object
  • Object
show all
Defined in:
lib/buildserver.rb

Instance Method Summary collapse

Constructor Details

#initialize(config = {}) ⇒ Buildserver

Returns a new instance of Buildserver.



10
11
12
13
14
# File 'lib/buildserver.rb', line 10

def initialize(config = {})
  @instances = []

  @config = config
end

Instance Method Details

#add_build_block(for_role, build_block) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/buildserver.rb', line 20

def add_build_block(for_role, build_block)
  if for_role == :base
    instances = @instances
  else
    instances = @instances.select{|instance| instance.has_role?(for_role.to_s)}
  end

  instances.each do |instance|
    instance.add_build_block(build_block)
  end
end

#add_instance(hostname, role, ip_address) ⇒ Object



16
17
18
# File 'lib/buildserver.rb', line 16

def add_instance(hostname, role, ip_address)
  @instances << Instance.new(hostname, role, ip_address)
end

#build!Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/buildserver.rb', line 32

def build!
  FileUtils.mkdir_p("builds")
  FileUtils.rm( Dir.glob("builds/*") )

  @instances.each do |instance|
    puts "Writing to builds/#{instance.hostname}.sh..."
    commands = instance.build(@config, @instances - [instance])

    file = File.new("builds/#{instance.hostname}.sh", "w")
    commands.each do |command|
      file.puts(command)
    end
    file.close
  end
end