mixlib-install 3.6.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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