Sha256: f2a7259b095ba25c1307329dd8673980b496a27e42e1351cf63a0a540e188a3d

Contents?: true

Size: 959 Bytes

Versions: 3

Compression:

Stored size: 959 Bytes

Contents

module Jkr
  class PlanFinder
    def initialize(jkr_env)
      @jkr_env = jkr_env
    end

    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

    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
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
jkr-0.2.2 lib/jkr/planfinder.rb
jkr-0.2.1 lib/jkr/planfinder.rb
jkr-0.1.0 lib/jkr/planfinder.rb