mixlib-install 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: caaea44ad0a1ced94e4b9844d6feaeebad9ae93c
4
- data.tar.gz: 283249640b7928ee0af4db38d20b61f759202f25
3
+ metadata.gz: 7592663e9dc88898464abf226ad8b1e905331e23
4
+ data.tar.gz: 689ed39a2569a84473a9fe542cd44340c2d82359
5
5
  SHA512:
6
- metadata.gz: 30277b99b8ebf0f878d79f084cb4fb1ead1fd235da9d6667a15ca151b28801ff524f8d40946f105127254aa424a8cb2c0dd68ee85b950fac94d5c03512cb3376
7
- data.tar.gz: 144dc4e82927af4fb8a56ec3f8125fc081d34bc016821aab9dd247d6036c581f4bbb553a651f4fd6e050a0e685124f518ecd9206fb59dcf29244a060affc5bcb
6
+ metadata.gz: bc3f0cc2bc318043963135505b1a3a8c9bd34daec489d8cd6b642f35f5274825d545128a0b9744571f7e0bfc3ad2cb4572aa3c90670959bdd01b09f47cc366de
7
+ data.tar.gz: 75411cd38ab03f9518d3b98f74f058d4ac9356da97356b11e79b42e759b4bdee787c46842fb2ba9549f89b61423b85f71035ef6ad3e121088f0bca14c34cf556
@@ -17,6 +17,7 @@
17
17
  #
18
18
 
19
19
  require "mixlib/install/util"
20
+ require "cgi"
20
21
 
21
22
  module Mixlib
22
23
  class Install
@@ -41,6 +42,7 @@ module Mixlib
41
42
  attr_accessor :https_proxy
42
43
 
43
44
  attr_accessor :base_url
45
+ attr_accessor :install_msi_url
44
46
 
45
47
  def initialize(version, powershell = false, opts = {})
46
48
  @version = version
@@ -64,7 +66,7 @@ module Mixlib
64
66
  parse_opts(opts)
65
67
  end
66
68
 
67
- def install
69
+ def install_command
68
70
  vars = if powershell
69
71
  install_command_vars_for_powershell
70
72
  else
@@ -81,7 +83,7 @@ module Mixlib
81
83
  # @return [String] shell variable lines
82
84
  # @api private
83
85
  def install_command_vars_for_bourne
84
- flags = %w[latest true].include?(version) ? "" : "-v #{version}"
86
+ flags = %w[latest true].include?(version) ? "" : "-v #{CGI.escape(version)}"
85
87
  flags << " " << "-n" if nightlies
86
88
  flags << " " << "-p" if prerelease
87
89
  flags << " " << install_flags if install_flags
@@ -105,12 +107,17 @@ module Mixlib
105
107
  # @api private
106
108
  def install_command_vars_for_powershell
107
109
  [
108
- shell_var("chef_metadata_url", windows_metadata_url),
109
110
  shell_var("chef_omnibus_root", root),
110
111
  shell_var("msi", "$env:TEMP\\chef-#{version}.msi"),
111
- shell_var("pretty_version", Util.pretty_version(version)),
112
- shell_var("version", version)
113
- ].join("\n")
112
+ ].tap { |vars|
113
+ if install_msi_url
114
+ vars << shell_var("chef_msi_url", install_msi_url)
115
+ else
116
+ vars << shell_var("chef_metadata_url", windows_metadata_url)
117
+ vars << shell_var("pretty_version", Util.pretty_version(version))
118
+ vars << shell_var("version", version)
119
+ end
120
+ }.join("\n")
114
121
  end
115
122
 
116
123
  # rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength
@@ -136,6 +143,8 @@ module Mixlib
136
143
  when "sudo_command"
137
144
  self.use_sudo = true
138
145
  self.sudo_command = setting
146
+ when "install_msi_url"
147
+ self.install_msi_url = setting
139
148
  end
140
149
  end
141
150
  end
@@ -176,7 +185,7 @@ module Mixlib
176
185
 
177
186
  url = "#{base}#{endpoint}"
178
187
  url << "?p=windows&m=x86_64&pv=2008r2" # same package for all versions
179
- url << "&v=#{version.to_s.downcase}"
188
+ url << "&v=#{CGI.escape(version.to_s.downcase)}"
180
189
  url << "&prerelease=true" if prerelease
181
190
  url << "&nightlies=true" if nightlies
182
191
  url
@@ -1,5 +1,5 @@
1
1
  module Mixlib
2
2
  class Install
3
- VERSION = "0.3.0"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
@@ -3,8 +3,11 @@ Function Check-UpdateChef($root, $version) {
3
3
  elseif ("$version" -eq "true") { return $false }
4
4
  elseif ("$version" -eq "latest") { return $true }
5
5
 
6
- Try { $chef_version = (& $root\bin\chef-solo.bat -v).split(" ", 2)[1] }
7
- Catch { $chef_version = "" }
6
+ Try { $chef_version = Get-Content $root\version-manifest.txt | select-object -1}
7
+ Catch {
8
+ Try { $chef_version = (& $root\bin\chef-solo.bat -v).split(" ", 2)[1] }
9
+ Catch { $chef_version = "" }
10
+ }
8
11
 
9
12
  if ($chef_version.StartsWith($version)) { return $false }
10
13
  else { return $true }
@@ -26,16 +29,15 @@ Function Get-MD5Sum($src) {
26
29
  } Finally { if (($c -ne $null) -and ($c.GetType().GetMethod("Dispose") -ne $null)) { $c.Dispose() }; if ($in -ne $null) { $in.Dispose() } }
27
30
  }
28
31
 
29
- Function Download-Chef($md_url, $dst) {
30
- $url, $md5 = Get-ChefMetadata $md_url
31
-
32
+ Function Download-Chef($url, $md5, $dst) {
32
33
  Try {
33
34
  Log "Downloading package from $url"
34
35
  ($c = Make-WebClient).DownloadFile($url, $dst)
35
36
  Log "Download complete."
36
37
  } Finally { if ($c -ne $null) { $c.Dispose() } }
37
38
 
38
- if (($dmd5 = Get-MD5Sum $dst) -eq $md5) { Log "Successfully verified $dst" }
39
+ if ($md5 -eq $null) { Log "Skipping md5 verification" }
40
+ elseif (($dmd5 = Get-MD5Sum $dst) -eq $md5) { Log "Successfully verified $dst" }
39
41
  else { throw "MD5 for $dst $dmd5 does not match $md5" }
40
42
  }
41
43
 
@@ -69,7 +71,13 @@ $msi = Unresolve-Path $msi
69
71
 
70
72
  if (Check-UpdateChef $chef_omnibus_root $version) {
71
73
  Write-Host "-----> Installing Chef Omnibus ($pretty_version)`n"
72
- Download-Chef "$chef_metadata_url" $msi
74
+ if ($chef_metadata_url -ne $null) {
75
+ $url, $md5 = Get-ChefMetadata "$chef_metadata_url"
76
+ } else {
77
+ $url = $chef_msi_url
78
+ $md5 = $null
79
+ }
80
+ Download-Chef "$url" $md5 $msi
73
81
  Install-Chef $msi
74
82
  } else {
75
83
  Write-Host "-----> Chef Omnibus installation detected ($pretty_version)`n"
@@ -172,13 +172,22 @@ should_update_chef() {
172
172
  return 0;
173
173
  fi
174
174
 
175
- chef_version="`${1}/bin/chef-solo -v | cut -d \" \" -f 2`";
175
+ if test -f "${1}/version-manifest.txt"; then
176
+ chef_version="`head -n 1 ${1}/version-manifest.txt | cut -d \" \" -f 2`";
177
+ else
178
+ chef_version="`${1}/bin/chef-solo -v | cut -d \" \" -f 2`";
179
+ fi
176
180
 
177
181
  echo "$chef_version" | grep "^${2}" 2>&1 >/dev/null;
178
182
  if test $? -eq 0; then
179
183
  return 1;
180
184
  else
181
- return 0;
185
+ echo "${2}" | grep "^$chef_version" 2>&1 >/dev/null;
186
+ if test $? -eq 0; then
187
+ return 1;
188
+ else
189
+ return 0;
190
+ fi
182
191
  fi
183
192
  }
184
193
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mixlib-install
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thom May
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-15 00:00:00.000000000 Z
11
+ date: 2015-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -98,3 +98,4 @@ signing_key:
98
98
  specification_version: 4
99
99
  summary: A mixin to help with omnitruck installs
100
100
  test_files: []
101
+ has_rdoc: