bibliothecary 8.2.6 → 8.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/bibliothecary/configuration.rb +0 -2
- data/lib/bibliothecary/parsers/maven.rb +22 -22
- data/lib/bibliothecary/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c551b8910bf1a2244fddcde8a12ab29d88816b61237b10c992a53d049b2ad661
|
4
|
+
data.tar.gz: 55254294ffec08398bc658b117673ea2697d31ddc8ad9592d24225313b9803bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52966b0a1fa300c8115f413ebdc991b3856bb77f8098e5b19ed996b1f9bf3c46b54cc41ed2998f0a157f3544c54296b99437596b2666e8345c6285208f0bd46c
|
7
|
+
data.tar.gz: e0c980d9065bfbc3c98100c0ebd92f7c0e16ab93f5e0a3f4a8178d8fb4a89ff032225737951486bf704d337d2bf9f2d18d60074e545ee6852297293c5e952b5b
|
@@ -5,7 +5,6 @@ module Bibliothecary
|
|
5
5
|
attr_accessor :carthage_parser_host
|
6
6
|
attr_accessor :clojars_parser_host
|
7
7
|
attr_accessor :mix_parser_host
|
8
|
-
attr_accessor :gradle_parser_host
|
9
8
|
attr_accessor :yarn_parser_host
|
10
9
|
attr_accessor :conda_parser_host
|
11
10
|
attr_accessor :swift_parser_host
|
@@ -17,7 +16,6 @@ module Bibliothecary
|
|
17
16
|
@carthage_parser_host = 'https://carthage.libraries.io'
|
18
17
|
@clojars_parser_host = 'https://clojars.libraries.io'
|
19
18
|
@mix_parser_host = 'https://mix.libraries.io'
|
20
|
-
@gradle_parser_host = 'https://gradle-parser.libraries.io'
|
21
19
|
@yarn_parser_host = 'https://yarn-parser.libraries.io'
|
22
20
|
@conda_parser_host = 'https://conda-parser.libraries.io'
|
23
21
|
@swift_parser_host = 'http://swift.libraries.io'
|
@@ -13,16 +13,19 @@ module Bibliothecary
|
|
13
13
|
GRADLE_DEP_REGEX = /(\+---|\\---){1}/
|
14
14
|
|
15
15
|
# Builtin methods: https://docs.gradle.org/current/userguide/java_plugin.html#tab:configurations
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
#
|
20
|
-
#
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
16
|
+
# Deprecated methods: https://docs.gradle.org/current/userguide/upgrading_version_6.html#sec:configuration_removal
|
17
|
+
GRADLE_DEPENDENCY_METHODS = %w(api compile compileClasspath compileOnly compileOnlyApi implementation runtime runtimeClasspath runtimeOnly testCompile testCompileOnly testImplementation testRuntime testRuntimeOnly)
|
18
|
+
|
19
|
+
# Intentionally overly-simplified regexes to scrape deps from build.gradle (Groovy) and build.gradle.kts (Kotlin) files.
|
20
|
+
# To be truly useful bibliothecary would need full Groovy / Kotlin parsers that speaks Gradle,
|
21
|
+
# because the Groovy and Kotlin DSLs have many dynamic ways of declaring dependencies.
|
22
|
+
GRADLE_VERSION_REGEX = /[\w.-]+/ # e.g. '1.2.3'
|
23
|
+
GRADLE_VAR_INTERPOLATION_REGEX = /\$\w+/ # e.g. '$myVersion'
|
24
|
+
GRADLE_CODE_INTERPOLATION_REGEX = /\$\{.*\}/ # e.g. '${my-project-settings["version"]}'
|
25
|
+
GRADLE_GAV_REGEX = /([\w.-]+)\:([\w.-]+)(?:\:(#{GRADLE_VERSION_REGEX}|#{GRADLE_VAR_INTERPOLATION_REGEX}|#{GRADLE_CODE_INTERPOLATION_REGEX}))?/ # e.g. "group:artifactId:1.2.3"
|
26
|
+
GRADLE_COMMENT_REGEX = /\/\/.*|\/\*.*\*\// # '// hello' or '/* hello */'
|
27
|
+
GRADLE_GROOVY_SIMPLE_REGEX = /(#{GRADLE_DEPENDENCY_METHODS.join('|')})\s+['"]#{GRADLE_GAV_REGEX}['"]\s*(?:#{GRADLE_COMMENT_REGEX})*$/m
|
28
|
+
GRADLE_KOTLIN_SIMPLE_REGEX = /(#{GRADLE_DEPENDENCY_METHODS.join('|')})\s*\(\s*"#{GRADLE_GAV_REGEX}"\s*\)\s*(?:#{GRADLE_COMMENT_REGEX})*$/m
|
26
29
|
|
27
30
|
MAVEN_PROPERTY_REGEX = /\$\{(.+?)\}/
|
28
31
|
MAX_DEPTH = 5
|
@@ -233,24 +236,21 @@ module Bibliothecary
|
|
233
236
|
end
|
234
237
|
|
235
238
|
def self.parse_gradle(file_contents, options: {})
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
json['dependencies'].map do |dependency|
|
241
|
-
name = gradle_dependency_name(dependency["group"], dependency["name"])
|
242
|
-
next unless name =~ /[\w-]+\.[\w_-]+(\.[\w-])?\:[\w-]/
|
239
|
+
file_contents
|
240
|
+
.scan(GRADLE_GROOVY_SIMPLE_REGEX) # match 'implementation "group:artifactId:version"'
|
241
|
+
.reject { |(_type, group, artifactId, _version)| group.nil? || artifactId.nil? } # remove any matches with missing group/artifactId
|
242
|
+
.map { |(type, group, artifactId, version)|
|
243
243
|
{
|
244
|
-
name:
|
245
|
-
requirement:
|
246
|
-
type:
|
244
|
+
name: [group, artifactId].join(":"),
|
245
|
+
requirement: version || "*",
|
246
|
+
type: type
|
247
247
|
}
|
248
|
-
|
248
|
+
}
|
249
249
|
end
|
250
250
|
|
251
251
|
def self.parse_gradle_kts(file_contents, options: {})
|
252
252
|
file_contents
|
253
|
-
.scan(
|
253
|
+
.scan(GRADLE_KOTLIN_SIMPLE_REGEX) # match 'implementation("group:artifactId:version")'
|
254
254
|
.reject { |(_type, group, artifactId, _version)| group.nil? || artifactId.nil? } # remove any matches with missing group/artifactId
|
255
255
|
.map { |(type, group, artifactId, version)|
|
256
256
|
{
|