Class: Judges::Download
Overview
The download command.
This class is instantiated by the bin/judges command line interface. You are not supposed to instantiate it yourself.
- Author
-
Yegor Bugayenko (yegor256@gmail.com)
- Copyright
-
Copyright © 2024-2026 Yegor Bugayenko
- License
-
MIT
Instance Method Summary collapse
-
#initialize(loog) ⇒ Download
constructor
Initialize.
-
#run(opts, args) ⇒ Object
Run the download command (called by the
bin/judgesscript).
Constructor Details
#initialize(loog) ⇒ Download
Initialize.
23 24 25 |
# File 'lib/judges/commands/download.rb', line 23 def initialize(loog) @loog = loog end |
Instance Method Details
#run(opts, args) ⇒ Object
Run the download command (called by the bin/judges script).
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/judges/commands/download.rb', line 31 def run(opts, args) raise(ArgumentError, 'Exactly two arguments required') unless args.size == 2 jname = args[0] path = args[1] name = File.basename(path) baza = BazaRb.new( opts['host'], opts['port'].to_i, opts['token'], ssl: opts['ssl'], timeout: (opts['timeout'] || 30).to_i, loog: @loog, retries: (opts['retries'] || 3).to_i ) elapsed(@loog, level: Logger::INFO) do id = baza.durable_find(jname, name) if id.nil? @loog.info("Durable '#{name}' not found in '#{jname}'") return end @loog.info("Durable ##{id} ('#{name}') found in '#{jname}'") baza.durable_lock(id, opts['owner'] || 'default') begin baza.durable_load(id, path) throw(:"👍 Downloaded durable ##{id} to #{path} (#{File.size(path)} bytes)") ensure baza.durable_unlock(id, opts['owner'] || 'default') end end end |