Class: Judges::Pack
Overview
A single pack.
- Author
-
Yegor Bugayenko (yegor256@gmail.com)
- Copyright
-
Copyright © 2024 Yegor Bugayenko
- License
-
MIT
Instance Attribute Summary collapse
-
#dir ⇒ Object
readonly
Returns the value of attribute dir.
Instance Method Summary collapse
-
#initialize(dir, lib, loog) ⇒ Pack
constructor
A new instance of Pack.
-
#name ⇒ Object
Get the name of the pack.
-
#run(fbase, options) ⇒ Object
Run it with the given Factbase and environment variables.
-
#script ⇒ Object
Get the name of the .rb script in the pack.
-
#tests ⇒ Object
Return all .yml tests files.
Constructor Details
#initialize(dir, lib, loog) ⇒ Pack
Returns a new instance of Pack.
35 36 37 38 39 |
# File 'lib/judges/pack.rb', line 35 def initialize(dir, lib, loog) @dir = dir @lib = lib @loog = loog end |
Instance Attribute Details
#dir ⇒ Object (readonly)
Returns the value of attribute dir.
33 34 35 |
# File 'lib/judges/pack.rb', line 33 def dir @dir end |
Instance Method Details
#name ⇒ Object
Get the name of the pack.
64 65 66 |
# File 'lib/judges/pack.rb', line 64 def name File.basename(@dir) end |
#run(fbase, options) ⇒ Object
Run it with the given Factbase and environment variables.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/judges/pack.rb', line 42 def run(fbase, ) $fb = fbase $judge = File.basename(@dir) $options = $loog = @loog unless @lib.nil? raise "Lib dir #{@lib.to_rel} is absent" unless File.exist?(@lib) raise "Lib #{@lib.to_rel} is not a directory" unless File.directory?(@lib) Dir.glob(File.join(@lib, '*.rb')).each do |f| require_relative(File.absolute_path(f)) end end s = File.join(@dir, script) raise "Can't load '#{s}'" unless File.exist?(s) begin load(s, true) ensure $fb = $judge = $options = $loog = nil end end |
#script ⇒ Object
Get the name of the .rb script in the pack.
69 70 71 72 73 |
# File 'lib/judges/pack.rb', line 69 def script s = Dir.glob(File.join(@dir, '*.rb')).first raise "No *.rb scripts in #{@dir.to_rel}" if s.nil? File.basename(s) end |
#tests ⇒ Object
Return all .yml tests files.
76 77 78 |
# File 'lib/judges/pack.rb', line 76 def tests Dir.glob(File.join(@dir, '*.yml')) end |