mixlib-install 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -0
- data/lib/mixlib/install.rb +15 -8
- data/lib/mixlib/install/generator/powershell/scripts/helpers.ps1 +3 -12
- data/lib/mixlib/install/generator/powershell/scripts/install_project.ps1 +1 -0
- data/lib/mixlib/install/version.rb +1 -1
- data/support/install_command.ps1 +12 -11
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da86da1678b6aef5defbe82060f7476caa1f62e7
|
4
|
+
data.tar.gz: fad6d57bd932742b690beaed6d1dba6f5f2061eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bdf236b22604381394f24df9d0182eb2881ffc6964e2879ab5c3d20c8b21a494ec8cc2b1eb38460fc762cd0bf449986ce6c68ed1fd847b75caa70326834ac983
|
7
|
+
data.tar.gz: 4d5d547af2ad2429a35a327cb3f8680277c43973ce0dded009767780c128dc5a47e8e0e8b32582be9dfe2aca98e2fdfa22110b78cda24a21d4c946f6cce51ac0
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# Change Log
|
2
|
+
This change log follows the principles
|
3
|
+
outlined from [Keep a CHANGELOG](http://keepachangelog.com/).
|
4
|
+
|
5
|
+
All notable changes to this project will be documented in this file.
|
6
|
+
This project adheres to [Semantic Versioning](http://semver.org/).
|
7
|
+
|
8
|
+
## [Unreleased]
|
9
|
+
|
10
|
+
## [1.0.1] - 2016-03-31
|
11
|
+
### Fixed
|
12
|
+
- detect_platform method for Windows
|
13
|
+
|
14
|
+
### Changed
|
15
|
+
- added stopaction to kick in the catch statement if manifest is missing
|
16
|
+
- wait for msiexec to exit
|
17
|
+
- Replace md5sum checks with sha256 checks in install_command.ps1
|
18
|
+
|
19
|
+
## [1.0.0] - 2016-03-30
|
20
|
+
### Added
|
21
|
+
- Ability to query product artifacts from multiple channels
|
22
|
+
- Ability to generate installation scripts for `sh` and `ps1`
|
23
|
+
|
24
|
+
[Unreleased]: https://github.com/chef/mixlib-install/compare/v1.0.1...HEAD
|
25
|
+
[1.0.1]: https://github.com/chef/mixlib-install/compare/v1.0.0...v1.0.1
|
26
|
+
[1.0.0]: https://github.com/chef/mixlib-install/compare/v0.7.1...v1.0.0
|
data/lib/mixlib/install.rb
CHANGED
@@ -116,14 +116,21 @@ module Mixlib
|
|
116
116
|
# Returns a Hash containing the platform info options
|
117
117
|
#
|
118
118
|
def self.detect_platform
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
119
|
+
output = if Gem.win_platform?
|
120
|
+
# For Windows we write the detect platform script and execute the
|
121
|
+
# powershell.exe program with Mixlib::ShellOut
|
122
|
+
Dir.mktmpdir do |d|
|
123
|
+
File.open(File.join(d, "detect_platform.ps1"), "w+") do |f|
|
124
|
+
f.puts self.detect_platform_ps1
|
125
|
+
end
|
126
|
+
|
127
|
+
Mixlib::ShellOut.new("powershell.exe -file #{File.join(d, "detect_platform.ps1")}").run_command
|
128
|
+
end
|
129
|
+
else
|
130
|
+
Mixlib::ShellOut.new(self.detect_platform_sh).run_command
|
131
|
+
end
|
132
|
+
|
133
|
+
platform_info = output.stdout.split
|
127
134
|
|
128
135
|
{
|
129
136
|
platform: platform_info[0],
|
@@ -60,18 +60,9 @@ function Test-ProjectPackage {
|
|
60
60
|
function Get-FileHash ($Path, $Algorithm) {
|
61
61
|
$Path = (resolve-path $path).providerpath
|
62
62
|
$hash = @{Algorithm = $Algorithm; Path = $Path}
|
63
|
-
|
64
|
-
use ($
|
65
|
-
|
66
|
-
$hash.Hash = ([BitConverter]::ToString($c.ComputeHash($in))).Replace("-", "").ToUpper()
|
67
|
-
}
|
68
|
-
}
|
69
|
-
}
|
70
|
-
elseif ($Algorithm -like 'SHA256') {
|
71
|
-
use ($c = New-Object -TypeName Security.Cryptography.SHA256CryptoServiceProvider) {
|
72
|
-
use ($in = (gi $path).OpenRead()) {
|
73
|
-
$hash.Hash = ([BitConverter]::ToString($c.ComputeHash($in))).Replace("-", "").ToUpper()
|
74
|
-
}
|
63
|
+
use ($c = New-Object -TypeName Security.Cryptography.SHA256CryptoServiceProvider) {
|
64
|
+
use ($in = (gi $path).OpenRead()) {
|
65
|
+
$hash.Hash = ([BitConverter]::ToString($c.ComputeHash($in))).Replace("-", "").ToUpper()
|
75
66
|
}
|
76
67
|
}
|
77
68
|
new-object PSObject -Property $hash
|
@@ -86,6 +86,7 @@ function Install-Project {
|
|
86
86
|
if (Test-ProjectPackage -Path $download_destination -Algorithm 'SHA256' -Hash $package_metadata.sha256) {
|
87
87
|
Write-Host "Installing $project from $download_destination"
|
88
88
|
$p = Start-Process -FilePath "msiexec" -ArgumentList "/qn /i $download_destination" -Passthru -Wait
|
89
|
+
$p.WaitForExit()
|
89
90
|
if ($p.ExitCode -ne 0) {
|
90
91
|
throw "msiexec was not successful. Received exit code $($p.ExitCode)"
|
91
92
|
}
|
data/support/install_command.ps1
CHANGED
@@ -3,7 +3,7 @@ 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 = (Get-Content $root\version-manifest.txt | select-object -first 1) }
|
6
|
+
Try { $chef_version = (Get-Content $root\version-manifest.txt -ErrorAction stop | select-object -first 1) }
|
7
7
|
Catch {
|
8
8
|
Try { $chef_version = (& $root\bin\chef-solo.bat -v) }
|
9
9
|
Catch { $chef_version = " " }
|
@@ -18,32 +18,33 @@ Function Get-ChefMetadata($url) {
|
|
18
18
|
Finally { if ($c -ne $null) { $c.Dispose() } }
|
19
19
|
|
20
20
|
$md = ConvertFrom-StringData $response.Replace("`t", "=")
|
21
|
-
return @($md.url, $md.
|
21
|
+
return @($md.url, $md.sha256)
|
22
22
|
}
|
23
23
|
|
24
|
-
Function Get-
|
24
|
+
Function Get-SHA256($src) {
|
25
25
|
Try {
|
26
|
-
$c = New-Object -TypeName System.Security.Cryptography.
|
26
|
+
$c = New-Object -TypeName System.Security.Cryptography.SHA256CryptoServiceProvider
|
27
27
|
$bytes = $c.ComputeHash(($in = (Get-Item $src).OpenRead()))
|
28
28
|
return ([System.BitConverter]::ToString($bytes)).Replace("-", "").ToLower()
|
29
29
|
} Finally { if (($c -ne $null) -and ($c.GetType().GetMethod("Dispose") -ne $null)) { $c.Dispose() }; if ($in -ne $null) { $in.Dispose() } }
|
30
30
|
}
|
31
31
|
|
32
|
-
Function Download-Chef($url, $
|
32
|
+
Function Download-Chef($url, $sha256, $dst) {
|
33
33
|
Try {
|
34
34
|
Log "Downloading package from $url"
|
35
35
|
($c = Make-WebClient).DownloadFile($url, $dst)
|
36
36
|
Log "Download complete."
|
37
37
|
} Finally { if ($c -ne $null) { $c.Dispose() } }
|
38
38
|
|
39
|
-
if ($
|
40
|
-
elseif (($
|
41
|
-
else { throw "
|
39
|
+
if ($sha256 -eq $null) { Log "Skipping sha256 verification" }
|
40
|
+
elseif (($dsha256 = Get-SHA256 $dst) -eq $sha256) { Log "Successfully verified $dst" }
|
41
|
+
else { throw "SHA256 for $dst $dsha256 does not match $sha256" }
|
42
42
|
}
|
43
43
|
|
44
44
|
Function Install-Chef($msi) {
|
45
45
|
Log "Installing Chef Omnibus package $msi"
|
46
46
|
$p = Start-Process -FilePath "msiexec.exe" -ArgumentList "/qn /i $msi" -Passthru -Wait
|
47
|
+
$p.WaitForExit()
|
47
48
|
|
48
49
|
if ($p.ExitCode -ne 0) { throw "msiexec was not successful. Received exit code $($p.ExitCode)" }
|
49
50
|
|
@@ -72,12 +73,12 @@ $msi = Unresolve-Path $msi
|
|
72
73
|
if (Check-UpdateChef $chef_omnibus_root $version) {
|
73
74
|
Write-Host "-----> Installing Chef Omnibus ($pretty_version)`n"
|
74
75
|
if ($chef_metadata_url -ne $null) {
|
75
|
-
$url, $
|
76
|
+
$url, $sha256 = Get-ChefMetadata "$chef_metadata_url"
|
76
77
|
} else {
|
77
78
|
$url = $chef_msi_url
|
78
|
-
$
|
79
|
+
$sha256 = $null
|
79
80
|
}
|
80
|
-
Download-Chef "$url" $
|
81
|
+
Download-Chef "$url" $sha256 $msi
|
81
82
|
Install-Chef $msi
|
82
83
|
} else {
|
83
84
|
Write-Host "-----> Chef Omnibus installation detected ($pretty_version)`n"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mixlib-install
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thom May
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-03-
|
12
|
+
date: 2016-03-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: artifactory
|
@@ -135,6 +135,7 @@ files:
|
|
135
135
|
- ".rspec"
|
136
136
|
- ".rubocop.yml"
|
137
137
|
- ".travis.yml"
|
138
|
+
- CHANGELOG.md
|
138
139
|
- CONTRIBUTING.md
|
139
140
|
- Gemfile
|
140
141
|
- LICENSE
|