Class: VagrantPlugins::LibrarianPuppet::Action::Install

Inherits:
Object
  • Object
show all
Defined in:
lib/vagrant-librarian-puppet/action/librarian_puppet.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, env) ⇒ Install

Returns a new instance of Install.



8
9
10
11
12
13
# File 'lib/vagrant-librarian-puppet/action/librarian_puppet.rb', line 8

def initialize(app, env)
  @app = app
  @env = env
  # Config#finalize! SHOULD be called automatically
  env[:machine].config.librarian_puppet.finalize!
end

Instance Method Details

#call(env) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/vagrant-librarian-puppet/action/librarian_puppet.rb', line 15

def call(env)
  config = env[:machine].config.librarian_puppet
  if
    provisioned? and
    File.exist? File.join(env[:root_path], config.puppetfile_path)

    env[:ui].info "Installing Puppet modules with Librarian-Puppet..."

    # NB: Librarian::Puppet::Environment calls `which puppet` so we
    # need to make sure VAGRANT_HOME/gems/bin has been added to the
    # path.
    original_path = ENV['PATH']
    bin_path = env[:gems_path].join('bin')
    ENV['PATH'] = "#{bin_path}#{::File::PATH_SEPARATOR}#{ENV['PATH']}"

    # Determine if we need to persist placeholder file
    placeholder_file = File.join(
      env[:root_path],
      config.puppetfile_dir,
      'modules',
      config.placeholder_filename
    )
    if File.exist? placeholder_file
      placeholder_contents = File.read(placeholder_file)
    else
      placeholder_contents = nil
    end

    environment = Librarian::Puppet::Environment.new({
      :project_path => File.join(env[:root_path], config.puppetfile_dir)
    })
    Librarian::Action::Ensure.new(environment).run
    Librarian::Action::Resolve.new(environment, config.resolve_options).run
    Librarian::Action::Install.new(environment).run

    # Restore the original path
    ENV['PATH'] = original_path

    # Persist placeholder if necessary
    if placeholder_contents != nil
      File.open(placeholder_file, 'w') { |file|
        file.write(placeholder_contents)
      }
    end

  end
  @app.call(env)
end

#provisioned?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/vagrant-librarian-puppet/action/librarian_puppet.rb', line 64

def provisioned?
  @env[:provision_enabled].nil? ? true : @env[:provision_enabled]
end