mixlib-install 3.6.0 → 3.7.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: bec3e91b588c14d590bd962b0a5af3b3b2f504f8
4
- data.tar.gz: fd7b334717d2a2d550f61687d75483fddb588341
3
+ metadata.gz: 373dc90718fbd78d00902fe30c1415c4a59ae76b
4
+ data.tar.gz: 56f37d0469c613a23f56ae5e1db61164e96cd40d
5
5
  SHA512:
6
- metadata.gz: 4b98bc560c946f95c59a6710c5a677de36628857d2f97a82a7b8cda6233cc28291d114586d3f0e25817749e7c595c3e7cd2ade17e0cdcc6dce1272e370e09e48
7
- data.tar.gz: f201ddee0975cb209d0f4f7b7a4e39f57e842cdab5ed629afb35a8325a36195f11efb5cd7e89acd4745914636ff29e8e19e3d809ee1e75be765ae35ae34daade
6
+ metadata.gz: 8842abbba3208fb5899501b39007d6d18b436733426dd95b69047eabb971cec167a47ec03aeddeae45d8655a7e0ec8ed5c96edae6b9a5dffcac0dd38cd038394
7
+ data.tar.gz: 56edf364a53a8fc6f89eb716a971d94860e5bd0f06df6741a85b40ee57847e28511faf3617f8cf9d640a063bc17328406e8d8d50f5d20a3d7ad86fc73093ceef
data/CHANGELOG.md CHANGED
@@ -1,11 +1,16 @@
1
1
  # Mixlib::Install Changes
2
2
 
3
- <!-- latest_release 3.6.0 -->
3
+ <!-- latest_release 3.7.0 -->
4
+ ## [v3.7.0](https://github.com/chef/mixlib-install/tree/v3.7.0) (2017-10-11)
5
+
6
+ #### Merged Pull Requests
7
+ - add #download_artifact method to Mixlib::Install API [#243](https://github.com/chef/mixlib-install/pull/243) ([wrightp](https://github.com/wrightp))
8
+ <!-- latest_release -->
9
+
4
10
  ## [v3.6.0](https://github.com/chef/mixlib-install/tree/v3.6.0) (2017-09-15)
5
11
 
6
12
  #### Merged Pull Requests
7
13
  - add install.sh proxy support [#242](https://github.com/chef/mixlib-install/pull/242) ([wrightp](https://github.com/wrightp))
8
- <!-- latest_release -->
9
14
 
10
15
  ## [v3.5.1](https://github.com/chef/mixlib-install/tree/v3.5.1) (2017-09-08)
11
16
 
data/README.md CHANGED
@@ -159,6 +159,19 @@ Mixlib::Install.available_versions("chef", "stable")
159
159
  # => ["12.13.3", "12.13.7"]
160
160
  ```
161
161
 
162
+ ### Download an artifact
163
+ Download a specific artifact to a configurable location. All platform options (platform, platform_version, architecture) are required in order to filter a single artifact.
164
+ ```ruby
165
+ # detect platform and download to the operating system’s temporary file path
166
+ Mixlib::Install.new(product_name: "chefdk", channel: :stable).detect_platform.download_artifact(Dir.tmpdir)
167
+ # => "/tmp/chefdk-2.3.4-1.deb"
168
+
169
+ # specify platform options and download to current directory
170
+ Mixlib::Install.new(product_name: "chefdk", channel: :stable, platform: "ubuntu", platform_version: "14.04", architecture: "x86_64").download_artifact
171
+ # => "~/chefdk-2.3.4-1.deb"
172
+
173
+ ```
174
+
162
175
  ### User-Agent Request Headers
163
176
  By default, all requests made by `mixlib-install` will include a `User-Agent` request header as `mixlib-install/<version>`.
164
177
  Additional `User-Agent` request headers can be added by setting the `user_agent_headers` option.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.6.0
1
+ 3.7.0
@@ -82,6 +82,34 @@ module Mixlib
82
82
  Generator.install_command(options)
83
83
  end
84
84
 
85
+ #
86
+ # Download a single artifact
87
+ #
88
+ # @param [String] download directory. Default: Dir.pwd
89
+ #
90
+ # @return [String] file path of downloaded artifact
91
+ #
92
+ def download_artifact(directory = Dir.pwd)
93
+ if options.platform.nil? || options.platform_version.nil? || options.architecture.nil?
94
+ raise "Must provide platform options to download a specific artifact"
95
+ end
96
+
97
+ artifact = artifact_info
98
+
99
+ FileUtils.mkdir_p directory
100
+ file = File.join(directory, File.basename(artifact.url))
101
+
102
+ uri = URI.parse(artifact.url)
103
+ Net::HTTP.start(uri.host) do |http|
104
+ resp = http.get(uri.path)
105
+ open(file, "wb") do |io|
106
+ io.write(resp.body)
107
+ end
108
+ end
109
+
110
+ file
111
+ end
112
+
85
113
  #
86
114
  # Returns the base installation directory for the given options
87
115
  #
@@ -66,8 +66,10 @@ If no earlier version is found the earliest version available will be set.",
66
66
  mixlib_install_options.merge!(Mixlib::Install.detect_platform)
67
67
  end
68
68
 
69
+ installer = Mixlib::Install.new(mixlib_install_options)
70
+
69
71
  begin
70
- artifact = Mixlib::Install.new(mixlib_install_options).artifact_info
72
+ artifact = installer.artifact_info
71
73
  rescue Mixlib::Install::Backend::ArtifactsNotFound => e
72
74
  abort e.message
73
75
  end
@@ -75,21 +77,8 @@ If no earlier version is found the earliest version available will be set.",
75
77
  if options[:url]
76
78
  say artifact.url
77
79
  else
78
- FileUtils.mkdir_p options[:directory]
79
- file = File.join(options[:directory], File.basename(artifact.url))
80
-
81
- require "json"
82
- require "net/http"
83
-
84
- say "Starting download #{artifact.url} to #{file}"
85
- uri = URI.parse(artifact.url)
86
- Net::HTTP.start(uri.host) do |http|
87
- resp = http.get(uri.path)
88
- open(file, "wb") do |io|
89
- io.write(resp.body)
90
- end
91
- end
92
-
80
+ say "Starting download #{artifact.url}"
81
+ file = installer.download_artifact(options[:directory])
93
82
  say "Download saved to #{file}"
94
83
  end
95
84
 
@@ -1,5 +1,5 @@
1
1
  module Mixlib
2
2
  class Install
3
- VERSION = "3.6.0"
3
+ VERSION = "3.7.0"
4
4
  end
5
5
  end
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: 3.6.0
4
+ version: 3.7.0
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: 2017-09-15 00:00:00.000000000 Z
12
+ date: 2017-10-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mixlib-shellout
@@ -227,7 +227,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
227
227
  version: '0'
228
228
  requirements: []
229
229
  rubyforge_project:
230
- rubygems_version: 2.5.1
230
+ rubygems_version: 2.6.13
231
231
  signing_key:
232
232
  specification_version: 4
233
233
  summary: A library for interacting with Chef Software Inc's software distribution