Module: Prebake::ExtensionValidator

Defined in:
lib/prebake/extension_validator.rb

Constant Summary collapse

BINARY_GLOB =
"*.{so,bundle,dll}"

Class Method Summary collapse

Class Method Details

.validate(spec) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/prebake/extension_validator.rb', line 14

def self.validate(spec)
  ext_dir = spec.extension_dir
  return unless File.exist?(File.join(ext_dir, ".prebake"))

  # Fast path: root-level binaries already present
  return if Dir.glob(File.join(ext_dir, BINARY_GLOB)).any?

  # Scan known-broken nested patterns
  nested = Dir.glob(File.join(ext_dir, "extension", "*", "*", BINARY_GLOB))
  nested.concat(Dir.glob(File.join(ext_dir, "lib", BINARY_GLOB)))

  nested.each do |binary|
    next if File.symlink?(binary)
    next if File.size(binary).zero?

    dest = File.join(ext_dir, File.basename(binary))
    next if File.exist?(dest)

    FileUtils.cp(binary, dest)
    Logger.info "Validator: copied #{File.basename(binary)} to #{ext_dir}"
  end
end

.validate_allObject



10
11
12
# File 'lib/prebake/extension_validator.rb', line 10

def self.validate_all
  Bundler.definition.specs.each { |spec| validate(spec) }
end