Module: U3d::Downloader

Defined in:
lib/u3d/downloader.rb

Overview

Take care of downloading files and packages

Defined Under Namespace

Classes: LinuxDownloader, MacDownloader, StandardPackageDownloader, WindowsDownloader

Constant Summary collapse

DOWNLOAD_DIRECTORY =

Name of the directory for the package downloading

'Unity_Packages'.freeze
DOWNLOAD_PATH =

Path to the directory for the package downloading

"#{ENV['HOME']}/Downloads".freeze
UNITY_LANGUAGE_FILE_REGEX =

Regex to get the name of a localization asset

%r{\/\d+/[0-9\.]+\/([\w-]+)$}
UNITY_MODULE_FILE_REGEX =

Regex to get the name of a package out of its file name

%r{\/([\w\-_\.\+]+\.(?:pkg|exe|zip|sh|deb|msi|xz))[^\/]*$}

Class Method Summary collapse

Class Method Details

.download_directoryObject



39
40
41
# 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: []) ⇒ Object

download packages



53
54
55
56
57
58
59
60
61
# 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) ⇒ Object

fetch modules and put them in local cache



44
45
46
47
48
49
50
# 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: []) ⇒ Object

find already downloaded packages



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# 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