This commit is contained in:
josh committed 2022-02-05 15:17:13 -05:00
1 parent 7b746db64e
commit 44dd279f93
2 files changed
+35

No files matched your search

+2
View File
@@ -1,3 +1,5 @@
require "net/http"
require "digest"
require_relative "rscons/ansi"
require_relative "rscons/application"
require_relative "rscons/basic_environment"
+33
View File
@@ -37,6 +37,39 @@ module Rscons
end.sort
end
# Download a file.
#
# @param url [String]
# URL.
# @param dest [String]
# Path to where to save the file.
# @param options [Hash]
# Options.
# @option options [String] :sha256sum
# Expected file checksum.
#
# @return [void]
def download(url, dest, options = {})
if File.exist?(dest) && options[:sha256sum]
if Digest::SHA2.hexdigest(File.binread(dest)) == options[:sha256sum]
# Destination file already exists and has the expected checksum.
return
end
end
uri = URI(url)
http = Net::HTTP.new(uri.host)
digest = Digest::SHA2.new
File.open(dest, "wb") do |fh|
http.get(uri.path) do |data|
fh.write(data)
digest << data
end
end
if options[:sha256sum] && options[:sha256sum] != digest.hexdigest
raise RsconsError.new("Unexpected checksum on #{dest}")
end
end
# Construct a task parameter.
#
# @param name [String]