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 ([email protected])
- 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/judges
script..
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 |