module U3d::Downloader
Take care of downloading files and packages
Constants
- DOWNLOAD_DIRECTORY
Name of the directory for the package downloading
- DOWNLOAD_PATH
Path to the directory for the package downloading
- UNITY_LANGUAGE_FILE_REGEX
Regex to get the name of a localization asset
- UNITY_MODULE_FILE_REGEX
Regex to get the name of a package out of its file name
Public Class Methods
download_directory()
click to toggle source
# File lib/u3d/downloader.rb, line 39 def download_directory File.expand_path(ENV['U3D_DOWNLOAD_PATH'] || File.join(DOWNLOAD_PATH, DOWNLOAD_DIRECTORY)) end
download_modules(definition, packages: [])
click to toggle source
download packages
# File lib/u3d/downloader.rb, line 53 def download_modules(definition, packages: []) files = [] validator, downloader = setup_os(definition.os) packages.each do |package| get_package(downloader, validator, package, definition, files) end files end
fetch_modules(definition, packages: [], download: nil)
click to toggle source
fetch modules and put them in local cache
# File lib/u3d/downloader.rb, line 44 def fetch_modules(definition, packages: [], download: nil) if download download_modules(definition, packages: packages) else local_files(definition, packages: packages) end end
local_files(definition, packages: [])
click to toggle source
find already downloaded packages
# File lib/u3d/downloader.rb, line 64 def local_files(definition, packages: []) files = [] validator, downloader = setup_os(definition.os) packages.each do |package| path = downloader.destination_for(package, definition) if File.file?(path) if validator.validate(package, path, definition) files << [package, path, definition[package]] else UI.important "File present at #{path} is not correct, will not be used. Skipping #{package}" end else UI.error "No file has been downloaded for #{package}, or it has been moved from #{path}" end end files end
Public Instance Methods
download_package(path, url, size: nil)
click to toggle source
# File lib/u3d/downloader.rb, line 134 def download_package(path, url, size: nil) Utils.download_file(path, url, size: size) rescue Interrupt => e # Ensure that the file is deleted if download is aborted File.delete path raise e end
get_package(downloader, validator, package, definition, files)
click to toggle source
# File lib/u3d/downloader.rb, line 104 def get_package(downloader, validator, package, definition, files) path, url = downloader.destination_and_url_for(package, definition) package_info = definition[package] if File.file?(path) UI.verbose "Installer file for #{package_info.name} seems to be present at #{path}" if validator.validate(package, path, definition) UI.message "#{package_info.name} is already downloaded" files << [package, path, package_info] return else extension = File.extname(path) new_path = File.join(File.dirname(path), File.basename(path, extension) + '_CORRUPTED' + extension) UI.important "File present at #{path} is not correct, it has been renamed to #{new_path}" File.rename(path, new_path) end end UI.header "Downloading #{package_info.name} version #{definition.version}" UI.message 'Downloading from ' + url.to_s.cyan.underline UI.message 'Download will be found at ' + path download_package(path, url, size: package_info.download_size) if validator.validate(package, path, definition) UI.success "Successfully downloaded #{package}." files << [package, path, package_info] else UI.error "Failed to download #{package}" end end