1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
# frozen_string_literal: true
require 'jars/maven_exec'
module Jars
class JarDetails < Array
def scope
self[-2].to_sym
end
def file
file = self[-1].strip
file.empty? ? path : file
end
def group_id
self[0]
end
def artifact_id
self[1]
end
def version
self[-3]
end
def classifier
return nil if size == 5
self[2]
end
def gacv
classifier ? self[0..3] : self[0..2]
end
def path
if scope == :system
# replace maven like system properties embedded into the string
self[-1].gsub(/\$\{[a-zA-Z.]+\}/) do |a|
ENV_JAVA[a[2..-2]] || a
end
else
File.join(Jars.home, group_id.gsub(/[.]/, '/'), artifact_id, version, "#{gacv[1..].join('-')}.jar")
end
end
end
class Lock
def initialize(file)
@file = file
end
def process(scope)
scope ||= :runtime
File.read(@file).each_line do |line|
next unless /:.+:/.match?(line)
jar = JarDetails.new(line.strip.sub(/:jar:/, ':').sub(/:$/, ': ').split(':'))
case scope
when :all, :test
yield jar
when :compile
# jar.scope is maven scope
yield jar if jar.scope != :test
when :provided
# jar.scope is maven scope
yield jar if jar.scope == :provided
when :runtime
# jar.scope is maven scope
yield jar if (jar.scope != :test) && (jar.scope != :provided)
end
end
end
end
end
|