Top Level Namespace

Defined Under Namespace

Modules: ExtconfTaskVersion Classes: ExtconfTask

Instance Method Summary collapse

Instance Method Details

#find_header_in_gem(header, gem_name, *paths_from_gem_root) ⇒ Object

Parameters:

  • header (String)

    Header name

  • gem_name (String)

    Name of target gem

  • paths_from_gem_root (Array)

    Paths from gem root to search header. If paths_from_gem_root is empty, this method automatically search all subdirectories of target gem



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/extconf_task/mkmf_utils.rb', line 6

def find_header_in_gem(header, gem_name, *paths_from_gem_root)
  header_dirs = nil
  begin
    require "rubygems"
    spec = Gem::Specification.find_by_name(gem_name)
    if paths_from_gem_root.empty?
      if header_path = Dir.glob(File.join(spec.full_gem_path, "**", header)).first
        header_dirs = [File.dirname(header_path)]
      else
        return false
      end
    else
      header_dirs = paths_from_gem_root.map do |path|
        File.join(spec.full_gem_path, path)
      end
    end
  rescue LoadError
  end
  find_header(header, *header_dirs)
end