Puppet Class: nvm

Inherits:
::nvm::params
Defined in:
manifests/init.pp

Overview

See README.md for usage information

Parameters:

  • user (Any)
  • home (Any) (defaults to: undef)
  • nvm_dir (Any) (defaults to: undef)
  • profile_path (Any) (defaults to: undef)
  • version (Any) (defaults to: $nvm::params::version)
  • manage_user (Any) (defaults to: $nvm::params::manage_user)
  • manage_dependencies (Any) (defaults to: $nvm::params::manage_dependencies)
  • manage_profile (Any) (defaults to: $nvm::params::manage_profile)
  • nvm_repo (Any) (defaults to: $nvm::params::nvm_repo)
  • refetch (Any) (defaults to: $nvm::params::refetch)
  • install_node (Any) (defaults to: $nvm::params::install_node)
  • node_instances (Any) (defaults to: $nvm::params::node_instances)


2
3
4
5
6
7
8
9
10
11
12
13
14
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'manifests/init.pp', line 2

class nvm (
  $user,
  $home                = undef,
  $nvm_dir             = undef,
  $profile_path        = undef,
  $version             = $nvm::params::version,
  $manage_user         = $nvm::params::manage_user,
  $manage_dependencies = $nvm::params::manage_dependencies,
  $manage_profile      = $nvm::params::manage_profile,
  $nvm_repo            = $nvm::params::nvm_repo,
  $refetch             = $nvm::params::refetch,
  $install_node        = $nvm::params::install_node,
  $node_instances      = $nvm::params::node_instances,
) inherits ::nvm::params {

  if $home == undef and $user == 'root' {
    $final_home = '/root'
  }
  elsif $home == undef {
    $final_home = "/home/${user}"
  }
  else {
    $final_home = $home
  }

  if $nvm_dir == undef {
    $final_nvm_dir = "/home/${user}/.nvm"
  }
  else {
    $final_nvm_dir = $nvm_dir
  }

  if $profile_path == undef {
    $final_profile_path = "/home/${user}/.bashrc"
  }
  else {
    $final_profile_path = $profile_path
  }

  validate_string($user)
  validate_string($final_home)
  validate_string($final_nvm_dir)
  validate_string($final_profile_path)
  validate_string($version)
  validate_bool($manage_user)
  validate_bool($manage_dependencies)
  validate_bool($manage_profile)
  if $install_node {
    validate_string($install_node)
  }
  validate_hash($node_instances)

  Exec {
    path => '/bin:/sbin:/usr/bin:/usr/sbin',
  }

  if $manage_dependencies {
    $nvm_install_require = Package['git','wget','make']
    ensure_packages(['git', 'wget', 'make'])
  }
  else {
    $nvm_install_require = undef
  }

  if $manage_user {
    user { $user:
      ensure     => present,
      home       => $final_home,
      managehome => true,
      before     => Class['nvm::install']
    }
  }

  class { 'nvm::install':
    user         => $user,
    home         => $final_home,
    version      => $version,
    nvm_dir      => $final_nvm_dir,
    nvm_repo     => $nvm_repo,
    dependencies => $nvm_install_require,
    refetch      => $refetch,
  }

  if $manage_profile {
    file { "ensure ${final_profile_path}":
      ensure => 'present',
      path   => $final_profile_path,
      owner  => $user,
    } ->

    file_line { 'add NVM_DIR to profile file':
      path => $final_profile_path,
      line => "export NVM_DIR=${final_nvm_dir}",
    } ->

    file_line { 'add . ~/.nvm/nvm.sh to profile file':
      path => $final_profile_path,
      line => "[ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\"  # This loads nvm",
    }
  }

  if $install_node {
    $final_node_instances = merge($node_instances, {
      "${install_node}" => {
        set_default => true,
      },
    })
  }
  else {
    $final_node_instances = $node_instances
  }

  create_resources(::nvm::node::install, $final_node_instances, {
    user        => $user,
    nvm_dir     => $final_nvm_dir,
  })

}