Class: Judges::Pull
Overview
The pull command.
This class is instantiated by the bin/judge command line interface. You are not supposed to instantiate it yourself.
- Author
-
Yegor Bugayenko (yegor256@gmail.com)
- Copyright
-
Copyright © 2024 Yegor Bugayenko
- License
-
MIT
Instance Method Summary collapse
-
#initialize(loog) ⇒ Pull
constructor
A new instance of Pull.
-
#run(opts, args) ⇒ Object
Run it (it is supposed to be called by the
bin/judgesscript..
Constructor Details
#initialize(loog) ⇒ Pull
Returns a new instance of Pull.
39 40 41 |
# File 'lib/judges/commands/pull.rb', line 39 def initialize(loog) @loog = loog end |
Instance Method Details
#run(opts, args) ⇒ Object
Run it (it is supposed to be called by the bin/judges script.
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/judges/commands/pull.rb', line 46 def run(opts, args) raise 'Exactly two arguments required' unless args.size == 2 fb = Factbase.new 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 ) name = args[0] elapsed(@loog, level: Logger::INFO) do if baza.name_exists?(name) baza.lock(name, opts['owner']) begin jid = baza.recent(name) unless baza.exit_code(jid).zero? @loog.warn("STDOUT of the job ##{jid} (from the server):\n#{baza.stdout(jid)}") raise "The job ##{jid} ('#{name}') is broken, maybe you should expire it" end fb.import(baza.pull(wait(name, baza, jid, opts['wait']))) Judges::Impex.new(@loog, args[1]).export(fb) rescue StandardError => e baza.unlock(name, opts['owner']) raise e end throw :"Pulled #{fb.size} facts by the name '#{name}'" else throw :"There is nothing to pull, the name '#{name}' is absent on the server" end end end |