Class: Builderator::Interface

Inherits:
Object
  • Object
show all
Defined in:
lib/builderator/interface.rb,
lib/builderator/interface/packer.rb,
lib/builderator/interface/vagrant.rb,
lib/builderator/interface/berkshelf.rb

Overview

:nodoc:

Direct Known Subclasses

Berkshelf, Packer, Vagrant

Defined Under Namespace

Classes: Berkshelf, Packer, Vagrant

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.berkshelfObject



8
9
10
# File 'lib/builderator/interface/berkshelf.rb', line 8

def berkshelf
  @berkshelf ||= Berkshelf.new
end

.command(arg = nil) ⇒ Object



15
16
17
18
# File 'lib/builderator/interface.rb', line 15

def command(arg = nil)
  @command = arg unless arg.nil?
  @command
end

.from_gem(arg = nil) ⇒ Object



20
21
22
23
# File 'lib/builderator/interface.rb', line 20

def from_gem(arg = nil)
  @from_gem = arg unless arg.nil?
  @from_gem || @command
end

.packerObject



7
8
9
# File 'lib/builderator/interface/packer.rb', line 7

def packer
  @packer ||= Packer.new
end

.template(arg = nil) ⇒ Object



25
26
27
28
# File 'lib/builderator/interface.rb', line 25

def template(arg = nil)
  @template = arg unless arg.nil?
  @template
end

.vagrantObject



7
8
9
# File 'lib/builderator/interface/vagrant.rb', line 7

def vagrant
  @vagrant ||= Vagrant.new
end

Instance Method Details

#bundled?Boolean

Is vagrant in this bundle?



32
33
34
# File 'lib/builderator/interface.rb', line 32

def bundled?
  Gem.loaded_specs.key?(self.class.from_gem)
end

#cleanObject



63
64
65
# File 'lib/builderator/interface.rb', line 63

def clean
  source.unlink
end

#directoryObject



44
45
46
# File 'lib/builderator/interface.rb', line 44

def directory
  Util.workspace
end

#renderObject



48
49
50
51
# File 'lib/builderator/interface.rb', line 48

def render
  ERB.new(Util.source_path(self.class.template).binread,
          nil, '-', '@output_buffer').result(Config.instance_eval('binding'))
end

#sourceObject



53
54
55
# File 'lib/builderator/interface.rb', line 53

def source
  fail 'Interface does not provide a source!'
end

#whichObject Also known as: command



36
37
38
39
40
41
# File 'lib/builderator/interface.rb', line 36

def which
  return self.class.command if bundled?

  ## Not in the bundle. Use system path
  `which #{self.class.command}`.chomp.tap { |path| fail "Unable to locate a #{self.class.command} executable" if path.empty? }
end

#writeObject



57
58
59
60
61
# File 'lib/builderator/interface.rb', line 57

def write
  directory.mkpath
  source.write(render)
  self
end