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
Constructor Details
#initialize(loog) ⇒ Pull
Returns a new instance of Pull.
38 39 40 |
# File 'lib/judges/commands/pull.rb', line 38 def initialize(loog) @loog = loog end |
Instance Method Details
#run(opts, args) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/judges/commands/pull.rb', line 42 def run(opts, args) raise 'Exactly two arguments required' unless args.size == 2 fb = Factbase.new baza = Judges::Baza.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) do baza.lock(name, opts['owner']) if baza.name_exists?(name) 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) 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 |