bibliothecary 8.1.1 → 8.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8018773c7a6af0e5027e8239d0f0fdeea8157b208a08620bd943abddb36fa3f5
4
- data.tar.gz: 961b73c80ec0526cfcb3dbc78613a8e907cc01a7638b9b968efb952e785fa5b4
3
+ metadata.gz: 4dfafc16f9be53462f1eca5e0fa5b09dcc0a5d92531570630c087773ff87d18c
4
+ data.tar.gz: 3d0045a95cc5cff513474aae337e0a032543130cc7b87144adad8033138c6e17
5
5
  SHA512:
6
- metadata.gz: 9b1762248c26af4a3366eebf76fe7160bf86ef4c80018e0aa226a50a48e09821290ccaa1627b60739fe920e93a116498364d3a4ae69b02be6eab7285de2735ab
7
- data.tar.gz: b0e0dec6b219c2d812eb328588540637564f0184195cb003a37beb888e1eb1ae3a398df4c483f8c1ecbd3c7e6922bf385485dd8dc6d08db88bb8e0b873efd24a
6
+ metadata.gz: f984d7445345768463af5f2cb0906bf997e56ca03842ca538b65d95764ac427ed448a062593e293eeaa33779aaa2cb9b59b18f0715de813a6f018a815a03dc3f
7
+ data.tar.gz: 067f0a20d820635cd697b18c43254a818284a66b98a13367146a0f9063b63bfe9316427d32bf6b88d960f6283dd56adb4ad2f874c003c7e4c151d71181f3cd37
@@ -12,6 +12,17 @@ module Bibliothecary
12
12
  # "| \\--- com.google.guava:guava:23.5-jre (*)"
13
13
  GRADLE_DEP_REGEX = /(\+---|\\---){1}/
14
14
 
15
+ # Builtin methods: https://docs.gradle.org/current/userguide/java_plugin.html#tab:configurations
16
+ GRADLE_KTS_DEPENDENCY_METHODS = %w(api compile compileOnlyApi implementation runtimeOnly testCompileOnly testImplementation testRuntimeOnly)
17
+
18
+ # An intentionally overly-simplified regex to scrape deps from build.gradle.kts files.
19
+ # To be truly useful bibliothecary would need a full Kotlin parser that speaks Gradle,
20
+ # because the Kotlin DSL has many dynamic ways of declaring dependencies.
21
+ GRADLE_KTS_SIMPLE_REGEX = /(#{GRADLE_KTS_DEPENDENCY_METHODS.join('|')})\s*\(\s*"([^"]+)"\s*\)/m
22
+
23
+ # e.g. "group:artifactId:1.2.3"
24
+ GRADLE_KTS_GAV_REGEX = /([\w.-]+)\:([\w.-]+)(?:\:([\w.-]+))?/
25
+
15
26
  MAVEN_PROPERTY_REGEX = /\$\{(.+?)\}/
16
27
  MAX_DEPTH = 5
17
28
 
@@ -236,8 +247,17 @@ module Bibliothecary
236
247
  end
237
248
 
238
249
  def self.parse_gradle_kts(file_contents, options: {})
239
- # TODO: the gradle-parser side needs to be implemented for this, coming soon.
240
- []
250
+ file_contents
251
+ .scan(GRADLE_KTS_SIMPLE_REGEX) # match 'implementation("group:artifactId:version")'
252
+ .map { |(_type, dep_match)| GRADLE_KTS_GAV_REGEX.match(dep_match) } # extract ["group", "artifactId", ?"version"]
253
+ .reject { |gav_match| gav_match.nil? || gav_match[1].nil? || gav_match[2].nil? } # remove any with missing group/artifactId
254
+ .map { |gav_match|
255
+ {
256
+ name: [gav_match[1], gav_match[2]].join(":"),
257
+ requirement: gav_match[3] || "*",
258
+ type: nil # TODO: we may be able to infer dep types using the _type var above.
259
+ }
260
+ }
241
261
  end
242
262
 
243
263
  def self.gradle_dependency_name(group, name)
@@ -1,3 +1,3 @@
1
1
  module Bibliothecary
2
- VERSION = "8.1.1"
2
+ VERSION = "8.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bibliothecary
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.1.1
4
+ version: 8.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Nesbitt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-28 00:00:00.000000000 Z
11
+ date: 2022-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tomlrb