Class: Factorix::CLI::Commands::MOD::Download

Inherits:
Base
  • Object
show all
Includes:
DownloadSupport, PortalSupport
Defined in:
lib/factorix/cli/commands/mod/download.rb

Overview

Download MOD files from Factorio MOD Portal

Instance Method Summary collapse

Methods inherited from Base

backup_support!, confirmable!, inherited, require_game_stopped!

Instance Method Details

#call(mod_specs:, directory: ".", jobs: "4", recursive: false) ⇒ void

This method returns an undefined value.

Execute the download command

Parameters:

  • mod_specs (Array<String>)

    MOD specifications

  • directory (String) (defaults to: ".")

    Download directory

  • jobs (Integer) (defaults to: "4")

    Number of parallel downloads

  • recursive (Boolean) (defaults to: false)

    Include required dependencies recursively

Raises:



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/factorix/cli/commands/mod/download.rb', line 42

def call(mod_specs:, directory: ".", jobs: "4", recursive: false, **)
  jobs = Integer(jobs)
  download_dir = Pathname(directory).expand_path

  raise DirectoryNotFoundError, "Download directory does not exist: #{download_dir}" unless download_dir.exist?

  if runtime.mod_dir.exist? && download_dir.realpath == runtime.mod_dir.realpath
    raise InvalidOperationError, "Cannot download to MOD directory. Use 'mod install' instead."
  end

  download_targets = plan_download(mod_specs, download_dir, jobs, recursive)

  if download_targets.empty?
    say "No MOD(s) to download", prefix: :info
    return
  end

  download_mods(download_targets, jobs)

  say "Downloaded #{download_targets.size} MOD(s)", prefix: :success
end