Implement downloading progress

This commit is contained in:
2022-12-04 15:03:14 +01:00
parent 1dd5639bcb
commit 3a5a07afb4
3 changed files with 25 additions and 6 deletions

View File

@ -8,6 +8,8 @@ require_relative '../config/config'
require_relative 'package'
require 'net/http'
require 'pathname'
require 'progressbar'
require 'term/ansicolor'
module SlackBuilder
extend Rake::FileUtilsExt
@ -28,16 +30,22 @@ module SlackBuilder
end
end
def write_chunk(response, checksum, progressbar, io)
response.read_body do |chunk|
progressbar.progress += chunk.length
io << chunk
checksum << chunk
end
end
def write_download(target, response)
checksum = Digest::MD5.new
progressbar = ProgressBar.create title: target, total: response.header.content_length
File.open target, 'w' do |io|
response.read_body do |chunk|
print '.'
io << chunk
checksum << chunk
end
write_chunk response, checksum, progressbar, io
end
progressbar.finish
checksum
end
@ -63,7 +71,7 @@ def start_download(uri, target, http)
end
def download(uri, target)
print "Downloading #{uri} "
print Term::ANSIColor.green "Downloading #{uri} "
checksum = nil
Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|