42
43
44
45
46
47
48
49
50
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
|
# File 'lib/mixlib/install/cli.rb', line 42
def download(product_name)
mixlib_install_options = {
channel: options[:channel].to_sym,
product_name: product_name,
product_version: options[:version],
}
if options[:platform]
if options[:platform_version].nil? || options[:architecture].nil?
abort "Must provide platform version and architecture when specifying a platform"
end
mixlib_install_options[:platform] = options[:platform]
mixlib_install_options[:platform_version] = options[:platform_version]
mixlib_install_options[:architecture] = options[:architecture]
else
mixlib_install_options.merge!(Mixlib::Install.detect_platform)
end
say "Querying for artifact with options:\n#{JSON.pretty_generate(mixlib_install_options)}"
artifact = Mixlib::Install.new(mixlib_install_options).artifact_info
if artifact.nil? || artifact.is_a?(Array)
abort "No results found."
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
|