def download
      # Turned off ssl verification
      # This should be acceptable because it won't happen on a user's machine, just CI

      # define a progress-bar printer
      chunk_size = 1024 * 1024 * 1024
      total_size = 0
      dots = 0
      dot_printer = lambda do |size|
        total_size += size
        needed_dots = (total_size / chunk_size).to_i
        unprinted_dots = needed_dots - dots
        @output.print("." * unprinted_dots) if unprinted_dots > 0
        dots = needed_dots
      end

      open(package_url, ssl_verify_mode: 0, progress_proc: dot_printer) do |url|
        File.open(package_file, 'wb') { |file| file.write(url.read) }
      end
    rescue Net::OpenTimeout, Net::ReadTimeout, OpenURI::HTTPError, URI::InvalidURIError => e
      @output.puts "\nArduino force-install failed downloading #{package_url}: #{e}"
    end
def download
      # Turned off ssl verification
      # This should be acceptable because it won't happen on a user's machine, just CI

      # define a progress-bar printer
      chunk_size = 1024 * 1024 * 1024
      total_size = 0
      dots = 0
      dot_printer = lambda do |size|
        total_size += size
        needed_dots = (total_size / chunk_size).to_i
        unprinted_dots = needed_dots - dots
        @output.print("." * unprinted_dots) if unprinted_dots > 0
        dots = needed_dots
      end

      open(package_url, ssl_verify_mode: 0, progress_proc: dot_printer) do |url|
        File.open(package_file, 'wb') { |file| file.write(url.read) }
      end
    rescue Net::OpenTimeout, Net::ReadTimeout, OpenURI::HTTPError, URI::InvalidURIError => e
      @output.puts "\nArduino force-install failed downloading #{package_url}: #{e}"
    end
Download the package_url to package_file
 @return [bool] whether successful