Module: Libv8::Node::Paths

Defined in:
ext/libv8-node/paths.rb

Class Method Summary collapse

Class Method Details

.available_platform_directoriesObject



55
56
57
# File 'ext/libv8-node/paths.rb', line 55

def available_platform_directories
  Dir.glob(File.join(vendored_source_path, '*')).select { |d| File.directory?(d) }.map { |d| File.basename(d) } - ['include']
end

.configObject



59
60
61
# File 'ext/libv8-node/paths.rb', line 59

def config
  RbConfig::MAKEFILE_CONFIG
end

.construct_ideal_platform_nameObject



35
36
37
38
39
40
# File 'ext/libv8-node/paths.rb', line 35

def construct_ideal_platform_name
  local = Gem::Platform.local
  parts = [local.cpu, local.os, local.version]
  parts[2] = 'musl' if musl_platform?
  parts.compact.reject(&:empty?).join('-').gsub(/-darwin-?\d+/, '-darwin')
end

.determine_platformObject



28
29
30
31
32
33
# File 'ext/libv8-node/paths.rb', line 28

def determine_platform
  ideal = construct_ideal_platform_name
  return ideal if platform_directory_exists?(ideal)

  fallback_platform
end

.fallback_platformObject



50
51
52
53
# File 'ext/libv8-node/paths.rb', line 50

def fallback_platform
  available = available_platform_directories
  available.size == 1 ? available.first : construct_ideal_platform_name
end

.include_pathsObject



12
13
14
# File 'ext/libv8-node/paths.rb', line 12

def include_paths
  [Shellwords.escape(File.join(vendored_source_path, 'include'))]
end

.musl_platform?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'ext/libv8-node/paths.rb', line 42

def musl_platform?
  RUBY_PLATFORM =~ /musl/
end

.object_pathsObject



16
17
18
19
20
21
22
# File 'ext/libv8-node/paths.rb', line 16

def object_paths
  [Shellwords.escape(File.join(vendored_source_path,
                               platform,
                               'libv8',
                               'obj',
                               "libv8_monolith.#{config['LIBEXT']}"))]
end

.platformObject



24
25
26
# File 'ext/libv8-node/paths.rb', line 24

def platform
  @platform ||= determine_platform
end

.platform_directory_exists?(name) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
# File 'ext/libv8-node/paths.rb', line 46

def platform_directory_exists?(name)
  File.directory?(File.join(vendored_source_path, name))
end

.vendored_source_pathObject



63
64
65
# File 'ext/libv8-node/paths.rb', line 63

def vendored_source_path
  File.expand_path('../../vendor/v8', __dir__)
end