Class: Judges::Print

Inherits:
Object show all
Defined in:
lib/judges/commands/print.rb

Overview

Update.

Author

Yegor Bugayenko (yegor256@gmail.com)

Copyright

Copyright © 2024 Yegor Bugayenko

License

MIT

Instance Method Summary collapse

Constructor Details

#initialize(loog) ⇒ Print

Returns a new instance of Print.



33
34
35
# File 'lib/judges/commands/print.rb', line 33

def initialize(loog)
  @loog = loog
end

Instance Method Details

#run(opts, args) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/judges/commands/print.rb', line 37

def run(opts, args)
  raise 'At lease one argument required' if args.empty?
  o = args[1]
  f = args[0]
  fb = Judges::Impex.new(@loog, f).import
  if o.nil?
    raise 'Either provide output file name or use --auto' unless opts[:auto]
    o = File.join(File.dirname(f), File.basename(f).gsub(/\.[^.]*$/, ''))
    o = "#{o}.#{opts[:format]}"
  end
  FileUtils.mkdir_p(File.dirname(o))
  output =
    case opts[:format].downcase
      when 'yaml'
        fb.to_yaml
      when 'json'
        fb.to_json
      when 'xml'
        fb.to_xml
    end
  File.binwrite(o, output)
  @loog.info("Factbase printed to #{o.to_rel} (#{File.size(o)} bytes)")
end