diff options
author | Thom May <thom@chef.io> | 2018-05-04 12:08:27 +0100 |
---|---|---|
committer | Thom May <thom@chef.io> | 2018-05-04 12:08:27 +0100 |
commit | 34a66ec9ab64d740c0d371f7284b8c266b147e3b (patch) | |
tree | 6db945e18010472471e9e73eb9720c6bcdab4fad /lib | |
parent | 06a00403026b06548671adb6239ab44cab4981c2 (diff) | |
download | chef-34a66ec9ab64d740c0d371f7284b8c266b147e3b.tar.gz |
check the path to --recipe-urlwindows-open-uri
Provide the user with feedback if it's invalid or missing.
Signed-off-by: Thom May <thom@chef.io>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/chef/application/client.rb | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/chef/application/client.rb b/lib/chef/application/client.rb index b5ce2decb3..ffb997f187 100644 --- a/lib/chef/application/client.rb +++ b/lib/chef/application/client.rb @@ -28,6 +28,7 @@ require "chef/workstation_config_loader" require "chef/mixin/shell_out" require "chef-config/mixin/dot_d" require "mixlib/archive" +require "uri" class Chef::Application::Client < Chef::Application include Chef::Mixin::ShellOut @@ -534,14 +535,17 @@ class Chef::Application::Client < Chef::Application def fetch_recipe_tarball(url, path) Chef::Log.trace("Download recipes tarball from #{url} to #{path}") - if File.exist?(url) - FileUtils.cp(url, path) - else + if url =~ URI.regexp File.open(path, "wb") do |f| open(url) do |r| f.write(r.read) end end + elsif File.exist?(url) + FileUtils.cp(url, path) + else + Chef::Application.fatal! "You specified --recipe-url but the value is neither a valid URL nor a path to a file that exists on disk." + + "Please confirm the location of the tarball and try again." end end end |