Sha256: 966a1bce7d911b7357b63bf632ac45740e08dd14d046a52f415737f30b27d0a2

Contents?: true

Size: 1.46 KB

Versions: 24

Compression:

Stored size: 1.46 KB

Contents

require_relative 'native_folder'
require_relative 'native_loader'
require 'pathname'

# This class knows where to find propane libraries
class Library
  attr_reader :name, :path, :dir, :ppath

  def initialize(name)
    @name = name
    @ruby = true
  end

  def locate
    return if (@path = Pathname.new(
      File.join(Propane::SKETCH_ROOT, 'library', name, "#{name}.rb")
    )).exist?
    return if (@path = Pathname.new(
      File.join(PROPANE_ROOT, 'library', name, "#{name}.rb")
    )).exist?
    locate_java
  end

  def locate_java
    @dir = Pathname.new(
      File.join(Propane::SKETCH_ROOT, 'library', name)
    )
    locate_installed_java
  end

  def locate_installed_java
    unless dir.directory?
      @dir = Pathname.new(
        File.join(ENV['HOME'], '.propane', 'libraries', name, 'library')
      )
    end
    @path = dir.join(Pathname.new("#{name}.jar"))
  end

  def ruby?
    path.extname == '.rb'
  end

  def exist?
    path.exist?
  end

  def load_jars
    Dir.glob("#{dir}/*.jar").each do |jar|
      require jar
    end
    return true unless native_binaries?
    add_binaries_to_classpath
  end

  def native_binaries?
    native_folder = NativeFolder.new
    native = native_folder.name
    @ppath = File.join(dir, native)
    File.directory?(ppath) &&
      !Dir.glob(File.join(ppath, native_folder.extension)).empty?
  end

  def add_binaries_to_classpath
    native_loader = NativeLoader.new
    native_loader.add_native_path(ppath)
    true
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
propane-3.4.2-java lib/propane/library.rb
propane-3.4.1-java lib/propane/library.rb
propane-3.4.0-java lib/propane/library.rb
propane-3.3.1-java lib/propane/library.rb
propane-3.3.0-java lib/propane/library.rb
propane-3.2.0-java lib/propane/library.rb
propane-3.1.0.pre-java lib/propane/library.rb
propane-2.9.3-java lib/propane/library.rb
propane-3.0.1.pre-java lib/propane/library.rb
propane-2.9.2-java lib/propane/library.rb
propane-3.0.0.pre-java lib/propane/library.rb
propane-2.9.1-java lib/propane/library.rb
propane-2.9.0-java lib/propane/library.rb
propane-2.7.2-java lib/propane/library.rb
propane-2.8.0.pre-java lib/propane/library.rb
propane-2.7.1-java lib/propane/library.rb
propane-2.7.0-java lib/propane/library.rb
propane-2.6.6-java lib/propane/library.rb
propane-2.6.5.pre-java lib/propane/library.rb
propane-2.6.4-java lib/propane/library.rb