Implement downloading progress
This commit is contained in:
parent
1dd5639bcb
commit
3a5a07afb4
3
Gemfile
3
Gemfile
@ -10,3 +10,6 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
||||
|
||||
gem 'rake', '~> 13.0'
|
||||
gem 'rubocop', '~> 1.7', require: false
|
||||
|
||||
gem 'progressbar', '~> 1.11'
|
||||
gem 'term-ansicolor', '~> 1.7'
|
||||
|
@ -6,6 +6,7 @@ GEM
|
||||
parallel (1.22.1)
|
||||
parser (3.1.2.1)
|
||||
ast (~> 2.4.1)
|
||||
progressbar (1.11.0)
|
||||
rainbow (3.1.1)
|
||||
rake (13.0.6)
|
||||
regexp_parser (2.6.0)
|
||||
@ -23,14 +24,21 @@ GEM
|
||||
rubocop-ast (1.23.0)
|
||||
parser (>= 3.1.1.0)
|
||||
ruby-progressbar (1.11.0)
|
||||
sync (0.5.0)
|
||||
term-ansicolor (1.7.1)
|
||||
tins (~> 1.0)
|
||||
tins (1.32.1)
|
||||
sync
|
||||
unicode-display_width (2.3.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
progressbar (~> 1.11)
|
||||
rake (~> 13.0)
|
||||
rubocop (~> 1.7)
|
||||
term-ansicolor (~> 1.7)
|
||||
|
||||
BUNDLED WITH
|
||||
2.2.33
|
||||
|
@ -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_download(target, response)
|
||||
checksum = Digest::MD5.new
|
||||
|
||||
File.open target, 'w' do |io|
|
||||
def write_chunk(response, checksum, progressbar, io)
|
||||
response.read_body do |chunk|
|
||||
print '.'
|
||||
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|
|
||||
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|
|
||||
|
Loading…
Reference in New Issue
Block a user