Class: Vbuilder::Generator

Inherits:
Object
  • Object
show all
Defined in:
lib/vbuilder/generator.rb,
lib/vbuilder/generator/options.rb,
lib/vbuilder/generator/provider.rb,
lib/vbuilder/generator/application.rb

Defined Under Namespace

Classes: Application, Options, Provider

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Generator

Returns a new instance of Generator.



15
16
17
18
# File 'lib/vbuilder/generator.rb', line 15

def initialize(options = {})
    @options = options
    @provider = options[:provider]
end

Instance Attribute Details

#optionsObject

Returns the value of attribute options.



13
14
15
# File 'lib/vbuilder/generator.rb', line 13

def options
  @options
end

#providerObject

Returns the value of attribute provider.



13
14
15
# File 'lib/vbuilder/generator.rb', line 13

def provider
  @provider
end

Instance Method Details

#runObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/vbuilder/generator.rb', line 20

def run
    # get provider attributes from correct yaml file
    provider_attrs = Vbuilder::Helper::Utility.get_provider_attrs(@provider)

    if @options[:interactive]
        provider_attrs = Vbuilder::Helper::Cli.start_cli(provider_attrs)
    end

    # create new provider based on provider attributes
    provider = Vbuilder::Generator::Provider.new(provider_attrs)

    # check provider dependencies before moving on
    # gem execution will exit if unmet
    provider.check_dependencies

    template_file = Vbuilder::Helper::Utility.get_template_file

    renderer = ERB.new(template_file).result(provider.get_binding)

    File.open('Vagrantfile', 'w+') do |f|
        f.write(renderer)
    end
end