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, global, local, 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.
66 67 68 |
# File 'lib/judges/pack.rb', line 66 def name File.basename(@dir) end |
#run(fbase, global, local, 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 62 63 |
# File 'lib/judges/pack.rb', line 42 def run(fbase, global, local, ) $fb = fbase $judge = File.basename(@dir) $options = $loog = @loog $global = global $local = local 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.
71 72 73 74 75 |
# File 'lib/judges/pack.rb', line 71 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.
78 79 80 |
# File 'lib/judges/pack.rb', line 78 def tests Dir.glob(File.join(@dir, '*.yml')) end |