51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# File 'lib/mixlib/install/cli.rb', line 51
def download(product_name)
mixlib_install_options = {
channel: options[:channel].to_sym,
product_name: product_name,
product_version: options[:version],
platform_version_compatibility_mode: options[:platform_version_compat],
architecture: options[:architecture],
}.tap do |opt|
opt[:platform] = options[:platform] if options[:platform]
opt[:platform_version] = options[:platform_version] if options[:platform_version]
end
if options[:platform].nil? && options[:platform_version].nil?
mixlib_install_options.merge!(Mixlib::Install.detect_platform)
end
begin
artifact = Mixlib::Install.new(mixlib_install_options).artifact_info
rescue Mixlib::Install::Backend::ArtifactsNotFound => e
abort e.message
end
if options[:url]
say artifact.url
else
FileUtils.mkdir_p options[:directory]
file = File.join(options[:directory], File.basename(artifact.url))
require "json"
require "net/http"
say "Starting download #{artifact.url} to #{file}"
uri = URI.parse(artifact.url)
Net::HTTP.start(uri.host) do |http|
resp = http.get(uri.path)
open(file, "wb") do |io|
io.write(resp.body)
end
end
say "Download saved to #{file}"
end
say JSON.pretty_generate(artifact.to_hash) if options[:attributes]
end
|