Module: BitGirder::Ops::Ruby::RubyIncludes
- Extended by:
- Core::BitGirderMethods, Io
- Defined in:
- lib/bitgirder/ops/ruby.rb
Constant Summary
Constants included from Core::BitGirderMethods
Core::BitGirderMethods::PARAM_TYPE_ARG, Core::BitGirderMethods::PARAM_TYPE_ENVVAR, Core::BitGirderMethods::PARAM_TYPE_KEY
Constants included from Io
Io::ORDER_BIG_ENDIAN, Io::ORDER_LITTLE_ENDIAN
Constants included from Core
Core::ENV_BITGIRDER_DEBUG, Core::EXIT_FAILURE, Core::EXIT_SUCCESS
Class Method Summary collapse
- .as_include_argv(incl_dirs) ⇒ Object
-
.clean_include_dir_names(dirs) ⇒ Object
clean up adjacent slashes and other things that can be unsightly and in some cases cause more serious problems.
- .expect_single_dir(dir, pat) ⇒ Object
- .get_arch_dir(dir) ⇒ Object
- .get_ruby_include_dirs(opts) ⇒ Object
- .get_single_dir(dir, pat) ⇒ Object
- .infer_version_str(lib_dir) ⇒ Object
Methods included from Core::BitGirderMethods
argv_to_argh, check_fail_prefix, class_name_to_sym, code, compares_to, console, ext_to_class_name, ext_to_sym, has_env, has_key, has_keys, nonnegative, not_nil, positive, raisef, set_from_key, set_var, split_argv, sym_to_cli_switch, sym_to_ext_id, to_bool, unpack_argv_array, unpack_argv_hash, warn
Methods included from Io
as_encoded, as_json, as_read_src, as_write_dest, can_connect?, debug_kill, debug_wait2, digest_file, dump_json, dump_yaml, enc_utf8, ensure_dir, ensure_dirs, ensure_parent, ensure_wiped, file_exists, first_line, fsize, fu, int_to_byte_array, is_executable, load_json, load_yaml, mktmpdir, open_tempfile, parse_json, read_full, slurp, slurp_io, strict_decode64, strict_encode64, which, write_file
Class Method Details
.as_include_argv(incl_dirs) ⇒ Object
83 84 85 |
# 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) ⇒ Object
clean up adjacent slashes and other things that can be unsightly and in some cases cause more serious problems
22 23 24 25 26 |
# 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) ⇒ Object
45 46 47 48 49 |
# 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) ⇒ Object
55 56 57 58 59 |
# 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) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# 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) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# 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) ⇒ Object
51 52 53 |
# File 'lib/bitgirder/ops/ruby.rb', line 51 def self.infer_version_str( lib_dir ) self.expect_single_dir( lib_dir, /^\d+(?:\.\d+)*$/ ) end |