Propagate exceptions from fiber

This commit is contained in:
syeopite 2021-10-02 06:07:48 -07:00
parent 9be8263f26
commit 1f1e14fba5
No known key found for this signature in database
GPG Key ID: 6FA616E5A5294A82

View File

@ -78,7 +78,7 @@ end
tmp_dir_path = "#{Dir.tempdir}/invidious-videojs-dep-install" tmp_dir_path = "#{Dir.tempdir}/invidious-videojs-dep-install"
Dir.mkdir(tmp_dir_path) if !Dir.exists? tmp_dir_path Dir.mkdir(tmp_dir_path) if !Dir.exists? tmp_dir_path
channel = Channel(String).new channel = Channel(String | Exception).new
dependencies_to_install.each do |dep| dependencies_to_install.each do |dep|
spawn do spawn do
@ -99,7 +99,7 @@ dependencies_to_install.each do |dep|
# Unless we install an external dependency, crystal provides no way of extracting a tarball. # Unless we install an external dependency, crystal provides no way of extracting a tarball.
# Thus we'll go ahead and call a system command. # Thus we'll go ahead and call a system command.
`tar -zxf '#{download_path}/package.tgz' -C '#{download_path}'"` `tar -vzxf '#{download_path}/package.tgz' -C '#{download_path}'`
raise "Extraction for #{dep} failed" if !$?.success? raise "Extraction for #{dep} failed" if !$?.success?
# Would use File.rename in the following steps but for some reason it just doesn't work here. # Would use File.rename in the following steps but for some reason it just doesn't work here.
@ -140,6 +140,8 @@ dependencies_to_install.each do |dep|
end end
channel.send(dep_name) channel.send(dep_name)
rescue ex
channel.send(ex)
end end
end end
@ -149,6 +151,11 @@ else
puts "#{"Resolving".colorize(:green)} #{"player".colorize(:blue)} dependencies" puts "#{"Resolving".colorize(:green)} #{"player".colorize(:blue)} dependencies"
dependencies_to_install.size.times do dependencies_to_install.size.times do
result = channel.receive result = channel.receive
if result.is_a? Exception
raise result
end
puts "#{"Fetched".colorize(:green)} #{result.colorize(:blue)}" puts "#{"Fetched".colorize(:green)} #{result.colorize(:blue)}"
end end
end end