Sha256: 95a210ada6a6459ea5d665748dc374920aa116d73f4a7c872880e00bc50a8589

Contents?: true

Size: 1.5 KB

Versions: 13

Compression:

Stored size: 1.5 KB

Contents

# frozen_string_literal: true

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

# This class knows where to find picrate 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(Processing::SKETCH_ROOT, 'library', name, "#{name}.rb")
    )).exist?
    return if (@path = Pathname.new(
      File.join(PICRATE_ROOT, 'library', name, "#{name}.rb")
    )).exist?

    locate_java
  end

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

  def locate_installed_java
    unless dir.directory?
      @dir = Pathname.new(
        File.join(ENV['HOME'], '.picrate', '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").sort.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

13 entries across 13 versions & 1 rubygems

Version Path
picrate-2.5.2-java lib/picrate/library.rb
picrate-2.5.1-java lib/picrate/library.rb
picrate-2.5.0-java lib/picrate/library.rb
picrate-2.4.2-java lib/picrate/library.rb
picrate-2.4.1-java lib/picrate/library.rb
picrate-2.4.0-java lib/picrate/library.rb
picrate-2.3.0-java lib/picrate/library.rb
picrate-2.2.0-java lib/picrate/library.rb
picrate-2.1.2-java lib/picrate/library.rb
picrate-2.1.1-java lib/picrate/library.rb
picrate-2.1.0-java lib/picrate/library.rb
picrate-2.0.1-java lib/picrate/library.rb
picrate-2.0.0.pre-java lib/picrate/library.rb