module BitGirder::Ops::Ruby::RubyIncludes
Public Class Methods
as_include_argv( incl_dirs )
click to toggle source
# File lib/bitgirder/ops/ruby.rb, line 83 def self.as_include_argv( incl_dirs ) incl_dirs.map { |dir| [ "-I", dir ] }.flatten end
clean_include_dir_names( dirs )
click to toggle source
clean up adjacent slashes and other things that can be unsightly and in some cases cause more serious problems
# File lib/bitgirder/ops/ruby.rb, line 22 def self.clean_include_dir_names( dirs ) dirs.map { |dir| dir.gsub( %r{/+}, "/" ) }. map { |dir| dir.sub( %r{/$}, "" ) } end
expect_single_dir( dir, pat )
click to toggle source
# File lib/bitgirder/ops/ruby.rb, line 45 def self.expect_single_dir( dir, pat ) self.get_single_dir( dir, pat ) or raise "Couldn't find entry in #{dir} matching #{pat}" end
get_arch_dir( dir )
click to toggle source
# File lib/bitgirder/ops/ruby.rb, line 55 def self.get_arch_dir( dir ) self.get_single_dir( dir, /^(?:i\d86|x86_64).*(?:darwin|linux|solaris)/ ) end
get_ruby_include_dirs( opts )
click to toggle source
# File lib/bitgirder/ops/ruby.rb, line 61 def self.get_ruby_include_dirs( opts ) ruby_home = has_key( opts, :ruby_home ) lib_dir = file_exists( "#{ruby_home}/lib/ruby" ) ver = opts[ :version ] || self.infer_version_str( lib_dir ) res = [ "", "site_ruby", "vendor_ruby" ].inject( [] ) do |res, dir| dir = file_exists( "#{lib_dir}/#{dir}/#{ver}" ) res << dir if arch_dir = self.get_arch_dir( dir ) res << "#{dir}/#{arch_dir}" end res end self.clean_include_dir_names( res ) end
get_single_dir( dir, pat )
click to toggle source
# File lib/bitgirder/ops/ruby.rb, line 28 def self.get_single_dir( dir, pat ) res = Dir.chdir( dir ) do |dir| Dir.glob( "*" ). select { |f| File.directory?( f ) }. grep( pat ) end case res.size when 0 then nil when 1 then res[ 0 ] else raise "Multiple directories in #{dir} match #{pat}" end end
infer_version_str( lib_dir )
click to toggle source
# File lib/bitgirder/ops/ruby.rb, line 51 def self.infer_version_str( lib_dir ) self.expect_single_dir( lib_dir, /^\d+(?:\.\d+)*$/ ) end