Sha256: 8b292734eb2b67c36a242e2ffe90ca81fce4dc2ba970f950d06ecce9137ad3bb

Contents?: true

Size: 935 Bytes

Versions: 1

Compression:

Stored size: 935 Bytes

Contents

# encoding: UTF-8

module Expert
  class Jarfile
    attr_reader :dependencies

    class << self
      def from_path(jarfile_path)
        new(load(jarfile_path))
      end

      protected

      def load(jarfile_path)
        jar_deps = parse(jar_requirements_from_gems.join("\n"))
        jarfile_deps = parse(File.read(jarfile_path))
        (jar_deps + jarfile_deps).uniq(&:classifier)
      end

      def parse(contents)
        tokens = JarfileTokenizer.tokenize(contents)
        JarfileParser.new(tokens).dependencies
      end

      def jar_requirements_from_gems
        requirements_from_gems.select do |requirement|
          requirement.respond_to?(:start_with?) && requirement.start_with?('jar ')
        end
      end

      def requirements_from_gems
        Bundler.environment.specs.flat_map(&:requirements)
      end
    end

    def initialize(dependencies)
      @dependencies = dependencies
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
expert-1.0.0 lib/expert/jarfile.rb