Class: Jkr::PlanFinder

Inherits:
Object
  • Object
show all
Defined in:
lib/jkr/planfinder.rb

Instance Method Summary collapse

Constructor Details

#initialize(jkr_env) ⇒ PlanFinder

Returns a new instance of PlanFinder.



4
5
6
# File 'lib/jkr/planfinder.rb', line 4

def initialize(jkr_env)
  @jkr_env = jkr_env
end

Instance Method Details

#find_by_name(name, options = {}) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/jkr/planfinder.rb', line 8

def find_by_name(name, options = {})
  options[:plan_search_path] ||= [@jkr_env.jkr_plan_dir]

  options[:plan_search_path].each do |dir|
    Dir.glob("#{dir}/*.plan").each do |path|
      if File.basename(path, ".plan") == name
        return path
      end
    end
  end

  nil
end

#find_by_result_id(ret_id) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/jkr/planfinder.rb', line 22

def find_by_result_id(ret_id)
  ret_dir = Dir[sprintf("#{@jkr_env.jkr_result_dir}/%05d*", ret_id)].first

  unless ret_dir
    raise ArgumentError.new("Result not found: id=#{ret_id}")
  end

  plan_files = Dir["#{ret_dir}/*.plan"]

  if plan_files.size < 1
    raise RuntimeError.new("No plan file found: #{File.basename(ret_dir)}")
  elsif plan_files.size > 1
    raise RuntimeError.new("Multiple plan files found: #{File.basename(ret_dir)}")
  end

  plan_files.first
end