diff --git a/data/common.yaml b/data/common.yaml new file mode 100644 index 00000000..d537dc8a --- /dev/null +++ b/data/common.yaml @@ -0,0 +1,7 @@ +--- +nodejs::global_config_entries: {} + +lookup_options: + nodejs::global_config_entries: + merge: + strategy: deep diff --git a/hiera.yaml b/hiera.yaml new file mode 100644 index 00000000..1688d2a1 --- /dev/null +++ b/hiera.yaml @@ -0,0 +1,12 @@ +--- +version: 5 +defaults: + datadir: 'data' + data_hash: 'yaml_data' +hierarchy: + - name: 'Major Version' + path: '%{facts.os.name}-%{facts.os.release.major}.yaml' + - name: 'Distribution Name' + path: '%{facts.os.name}.yaml' + - name: 'common' + path: 'common.yaml' diff --git a/manifests/init.pp b/manifests/init.pp index 1e361474..38be7b13 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -1,4 +1,6 @@ # == Class: nodejs: See README.md for documentation. +# +# @param global_config_entries Create resources with nodejs::npm::global_config_entry class nodejs ( $cmd_exe_path = $nodejs::params::cmd_exe_path, Boolean $manage_nodejs_package = true, @@ -26,6 +28,7 @@ $repo_url_suffix = $nodejs::params::repo_url_suffix, Array $use_flags = $nodejs::params::use_flags, Optional[String] $package_provider = $nodejs::params::package_provider, + Hash[String[1], Hash, 0] $global_config_entries = {}, ) inherits nodejs::params { if $manage_package_repo and !$repo_class { fail("${module_name}: The manage_package_repo parameter was set to true but no repo_class was provided.") @@ -39,4 +42,10 @@ Class[$repo_class] -> Class['nodejs::install'] } + + $global_config_entries.each |$setting, $params| { + nodejs::npm::global_config_entry { $setting: + * => $params, + } + } } diff --git a/spec/classes/nodejs_spec.rb b/spec/classes/nodejs_spec.rb index 95b3b462..0b252b45 100644 --- a/spec/classes/nodejs_spec.rb +++ b/spec/classes/nodejs_spec.rb @@ -309,6 +309,22 @@ is_expected.not_to contain_package('npm') end end + + context 'with global_config_entries' do + let :params do + { + global_config_entries: { + 'proxy' => { 'value' => 'https://proxy.com' } + } + } + end + + it do + is_expected.to contain_nodejs__npm__global_config_entry('proxy').with( + value: 'https://proxy.com' + ) + end + end end end