|
31 | 31 | # } |
32 | 32 | # |
33 | 33 | define dotnet( |
34 | | - $ensure = 'present', |
35 | | - $version = '', |
36 | | - $package_dir = '' |
37 | | -) { |
| 34 | + Enum['3.5', '4.0', '4.5', '4.5.1', '4.5.2'] |
| 35 | + $version, |
| 36 | + |
| 37 | + Enum['present', 'absent'] |
| 38 | + $ensure = 'present', |
38 | 39 |
|
39 | | - validate_re($ensure,['^(present|absent)$']) |
40 | | - validate_re($version,['^(3.5|4\.0|4\.5(\.\d)?)$']) |
| 40 | + Variant[String, Undef] |
| 41 | + $package_dir = undef, |
| 42 | +) { |
41 | 43 |
|
42 | 44 | include dotnet::params |
43 | 45 |
|
| 46 | + if $::os['family'] != 'windows' { |
| 47 | + fail("dotnet ${version} is not supported on ${::os['family']}") |
| 48 | + } |
| 49 | + |
| 50 | + $windows_version = $::os['release']['full'] |
| 51 | + |
44 | 52 | case $version { |
45 | 53 | '3.5': { |
46 | | - case $::operatingsystemversion { |
47 | | - /^Windows.Server.(2008|2012).?(R2)?.*/: { $type = 'feature' } |
48 | | - /^Windows (XP|Vista|7|8|8.1).*/: { $type = 'package' } |
49 | | - default: { $type = 'err' err("dotnet ${version} is not support on this version of windows") } |
| 54 | + case $windows_version { |
| 55 | + /^2012/: { |
| 56 | + $type = 'feature' |
| 57 | + $feature = 'NET-Framework-Features' |
| 58 | + } |
| 59 | + '2008 R2': { $type = 'feature' } |
| 60 | + '7', '8', '8.1': { $type = 'dism' } |
| 61 | + /^2003/, '2008', 'XP', 'Vista': { $type = 'package' } |
| 62 | + default: { $type = 'err' } |
50 | 63 | } |
51 | 64 | } |
52 | 65 | '4.0': { |
53 | | - case $::operatingsystemversion { |
54 | | - /^Windows.(Server)?.?(2003|2008|2012|XP|Vista|7|8.*).?(R2)?.*/: { $type = 'package' } |
55 | | - default: { $type = 'err' err("dotnet ${version} is not support on this version of windows") } |
| 66 | + case $windows_version { |
| 67 | + /^2012/, '8', '8.1': { $type = 'builtin' } |
| 68 | + /^2003/, /^2008/, 'XP', 'Vista', '7': { $type = 'package' } |
| 69 | + default: { $type = 'err' } |
56 | 70 | } |
57 | 71 | } |
58 | | - /4\.5(\.\d)?/: { |
59 | | - case $::operatingsystemversion { |
60 | | - /^Windows.(Server)?.?(2008|2012|Vista|7|8.*).?(R2)?.*/: { $type = 'package' } |
61 | | - default: { $type = 'err' err("dotnet ${version} is not support on this version of windows") } |
| 72 | + '4.5': { |
| 73 | + case $windows_version { |
| 74 | + /^2012/, '8', '8.1': { $type = 'builtin' } |
| 75 | + /^2003/, /^2008/, 'XP', 'Vista', '7': { $type = 'package' } |
| 76 | + default: { $type = 'err' } |
62 | 77 | } |
63 | 78 | } |
64 | | - default: { |
65 | | - $type = 'err' |
66 | | - err("dotnet does not have a version: ${version}") |
| 79 | + '4.5.1': { |
| 80 | + case $windows_version { |
| 81 | + '2012 R2', '8.1': { $type = 'builtin' } |
| 82 | + /^2003/, /^2008/, '2012', 'XP', 'Vista', '7', '8': { $type = 'package' } |
| 83 | + default: { $type = 'err' } |
| 84 | + } |
| 85 | + } |
| 86 | + '4.5.2': { |
| 87 | + case $windows_version { |
| 88 | + /^2003/, /^2008/, /^2012/, 'XP', 'Vista', '7', '8', '8.1': { $type = 'package' } |
| 89 | + default: { $type = 'err' } |
| 90 | + } |
67 | 91 | } |
| 92 | + default: { $type = 'err' } |
68 | 93 | } |
69 | 94 |
|
70 | | - if $type == 'feature' { |
71 | | - dotnet::install::feature { "dotnet-feature-${version}": |
72 | | - ensure => $ensure, |
73 | | - version => $version |
| 95 | + case $type { |
| 96 | + 'feature': { |
| 97 | + dotnet::install::feature { "dotnet-feature-${version}": |
| 98 | + ensure => $ensure, |
| 99 | + version => $version, |
| 100 | + feature => $feature, |
| 101 | + source => $package_dir, |
| 102 | + } |
74 | 103 | } |
75 | | - } elsif $type == 'package' { |
76 | | - dotnet::install::package { "dotnet-package-${version}": |
77 | | - ensure => $ensure, |
78 | | - version => $version, |
79 | | - package_dir => $package_dir |
| 104 | + 'dism': { |
| 105 | + dotnet::install::dism { "dotnet-dism-${version}": |
| 106 | + ensure => $ensure, |
| 107 | + version => $version, |
| 108 | + } |
| 109 | + } |
| 110 | + 'package': { |
| 111 | + dotnet::install::package { "dotnet-package-${version}": |
| 112 | + ensure => $ensure, |
| 113 | + version => $version, |
| 114 | + package_dir => $package_dir, |
| 115 | + } |
| 116 | + } |
| 117 | + 'builtin': { |
| 118 | + # This .NET version is built into the OS. No configuration required. |
| 119 | + } |
| 120 | + default: { |
| 121 | + fail("dotnet ${version} is not supported on windows ${windows_version}") |
80 | 122 | } |
81 | | - } else { |
82 | | - |
83 | 123 | } |
| 124 | + |
84 | 125 | } |
0 commit comments