Skip to content
This repository was archived by the owner on May 22, 2018. It is now read-only.

Commit 2a6a71f

Browse files
committed
Merge pull request #135 from blackjid/merge_hierarchy
Adds option to merge data from hiera hierarchical data sources
2 parents eb5d450 + f6fa705 commit 2a6a71f

File tree

3 files changed

+39
-8
lines changed

3 files changed

+39
-8
lines changed

data/common.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ boxen::config::srcdir: "%{::boxen_srcdir}"
1414
boxen::config::login: "%{::github_login}"
1515
boxen::config::repo_url_template: "%{::boxen_repo_url_template}"
1616
boxen::config::download_url_base: "%{::boxen_download_url_base}"
17+
boxen::config::hiera_merge_hierarchy: false

manifests/config.pp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
$login = undef,
2121
$repo_url_template = undef,
2222
$download_url_base = undef,
23+
$hiera_merge_hierarchy = undef
2324
) {
2425
validate_string(
2526
$home,

manifests/personal.pp

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
$manifests = "${boxen::config::repodir}/modules/people/manifests"
3131
$login = regsubst($boxen::config::login, '-','_', 'G')
32+
$merge_hierarchy = $boxen::config::hiera_merge_hierarchy
3233

3334
if $login != $boxen::config::login {
3435
notice("Changed boxen::personal login to ${login}")
@@ -40,19 +41,39 @@
4041
# If $projects looks like ['foo', 'bar'], behaves like:
4142
# include projects::foo
4243
# include projects::bar
43-
$project_classes = prefix($projects, 'projects::')
44+
$_projects = $merge_hierarchy ? {
45+
true => hiera_array("${name}::projects",[]),
46+
default => $projects
47+
}
48+
$project_classes = prefix($_projects, 'projects::')
4449
ensure_resource('class', $project_classes)
4550

4651
# If $includes looks like ['foo', 'bar'], behaves like:
4752
# class { 'foo': }
4853
# class { 'bar': }
49-
ensure_resource('class', $includes)
54+
$_includes = $merge_hierarchy ? {
55+
true => hiera_array("${name}::includes",undef),
56+
default => $includes
57+
}
58+
ensure_resource('class', $_includes)
5059

51-
# $casks and $osx_apps are synonyms. $osx_apps takes precedence
52-
$_casks = $osx_apps ? {
53-
undef => $casks,
54-
default => $osx_apps
60+
if $merge_hierarchy {
61+
$merged_osx_apps = hiera_array("${name}::osx_apps",undef)
62+
$merged_casks = hiera_array("${name}::casks",undef)
63+
64+
$_casks = $merged_osx_apps ? {
65+
undef => $merged_casks,
66+
default => $merged_osx_apps
67+
}
68+
}
69+
else {
70+
# $casks and $osx_apps are synonyms. $osx_apps takes precedence
71+
$_casks = $osx_apps ? {
72+
undef => $casks,
73+
default => $osx_apps
74+
}
5575
}
76+
5677
# If any casks/osx_apps are specified, declare them as brewcask packages
5778
if count($_casks) > 0 { include brewcask }
5879
ensure_resource('package', $_casks, {
@@ -62,7 +83,11 @@
6283
})
6384

6485
# If any homebrew packages are specified , declare them
65-
ensure_resource('package', $homebrew_packages, {
86+
$_homebrew_packages = $merge_hierarchy ? {
87+
true => hiera_array("${name}::homebrew_packages",undef),
88+
default => $homebrew_packages
89+
}
90+
ensure_resource('package', $_homebrew_packages, {
6691
'provider' => 'homebrew',
6792
})
6893

@@ -77,5 +102,9 @@
77102
# }
78103
#
79104
# Multiple projects may be specified in the $custom_projects hash.
80-
create_resources(boxen::project, $custom_projects)
105+
$_custom_projects = $merge_hierarchy ? {
106+
true => hiera_array("${name}::custom_projects",{}),
107+
default => $custom_projects
108+
}
109+
create_resources(boxen::project, $_custom_projects)
81110
}

0 commit comments

Comments
 (0)