ecosystems-bibliothecary 15.1.1 → 15.2.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/CHANGELOG.md +11 -0
- data/README.md +137 -124
- data/lib/bibliothecary/analyser.rb +4 -0
- data/lib/bibliothecary/parsers/actions.rb +4 -0
- data/lib/bibliothecary/parsers/bentoml.rb +4 -0
- data/lib/bibliothecary/parsers/bower.rb +4 -0
- data/lib/bibliothecary/parsers/cargo.rb +4 -0
- data/lib/bibliothecary/parsers/carthage.rb +4 -0
- data/lib/bibliothecary/parsers/clojars.rb +4 -0
- data/lib/bibliothecary/parsers/cocoapods.rb +4 -0
- data/lib/bibliothecary/parsers/cog.rb +4 -0
- data/lib/bibliothecary/parsers/conan.rb +4 -0
- data/lib/bibliothecary/parsers/conda.rb +4 -0
- data/lib/bibliothecary/parsers/cpan.rb +4 -0
- data/lib/bibliothecary/parsers/cran.rb +4 -0
- data/lib/bibliothecary/parsers/deno.rb +98 -0
- data/lib/bibliothecary/parsers/docker.rb +4 -0
- data/lib/bibliothecary/parsers/dub.rb +4 -0
- data/lib/bibliothecary/parsers/dvc.rb +4 -0
- data/lib/bibliothecary/parsers/elm.rb +4 -0
- data/lib/bibliothecary/parsers/go.rb +4 -0
- data/lib/bibliothecary/parsers/hackage.rb +55 -0
- data/lib/bibliothecary/parsers/haxelib.rb +4 -0
- data/lib/bibliothecary/parsers/hex.rb +89 -0
- data/lib/bibliothecary/parsers/homebrew.rb +4 -0
- data/lib/bibliothecary/parsers/julia.rb +55 -0
- data/lib/bibliothecary/parsers/luarocks.rb +4 -0
- data/lib/bibliothecary/parsers/maven.rb +4 -0
- data/lib/bibliothecary/parsers/meteor.rb +4 -0
- data/lib/bibliothecary/parsers/mlflow.rb +4 -0
- data/lib/bibliothecary/parsers/nimble.rb +4 -0
- data/lib/bibliothecary/parsers/nix.rb +205 -0
- data/lib/bibliothecary/parsers/npm.rb +4 -0
- data/lib/bibliothecary/parsers/nuget.rb +4 -0
- data/lib/bibliothecary/parsers/ollama.rb +4 -0
- data/lib/bibliothecary/parsers/packagist.rb +4 -0
- data/lib/bibliothecary/parsers/pub.rb +4 -0
- data/lib/bibliothecary/parsers/pypi.rb +9 -0
- data/lib/bibliothecary/parsers/rubygems.rb +4 -0
- data/lib/bibliothecary/parsers/shard.rb +4 -0
- data/lib/bibliothecary/parsers/swift_pm.rb +4 -0
- data/lib/bibliothecary/parsers/vcpkg.rb +4 -0
- data/lib/bibliothecary/version.rb +1 -1
- data/lib/bibliothecary.rb +7 -0
- metadata +3 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c1399499146bc9abb6b2053d1e842cff2a33e05166f4fca7fed6fba222146f5e
|
|
4
|
+
data.tar.gz: 2b1460ba23303796a1b73bfa445fee11771857f5270effce6da04e6ed4ff920f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2ab9631fd2e5472d6a60784685252961f75fcae716561d1e7bd6c1bc7f87bba18f346988b26f787cc13bd666fc06a99db133926726880ee983e01fbe4f64a5d9
|
|
7
|
+
data.tar.gz: 1dc6d4efca6e8b643ca7c76e495a6b40364169fc8b51d238f2708e5da1ec8d04515adafec8d2042951088729258b3552a547473c93a59ae3f12c7a89ff681065
|
data/CHANGELOG.md
CHANGED
|
@@ -13,6 +13,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
13
13
|
|
|
14
14
|
### Removed
|
|
15
15
|
|
|
16
|
+
## [15.2.0]
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- Deno parser for deno.json, deno.jsonc, and deno.lock files (supports npm: and jsr: specifiers)
|
|
21
|
+
- Nix parser for flake.nix, flake.lock, nix/sources.json (niv), and npins/sources.json (npins)
|
|
22
|
+
- Gleam support in Hex parser for gleam.toml and manifest.toml
|
|
23
|
+
- Rebar3 support in Hex parser for rebar.lock
|
|
24
|
+
- Julia Project.toml and Manifest.toml support
|
|
25
|
+
- Hackage cabal.project.freeze support
|
|
26
|
+
|
|
16
27
|
## [15.1.1]
|
|
17
28
|
|
|
18
29
|
### Added
|
data/README.md
CHANGED
|
@@ -44,164 +44,177 @@ All available config options are in: https://github.com/ecosyste-ms/bibliothecar
|
|
|
44
44
|
|
|
45
45
|
## Supported package manager file formats
|
|
46
46
|
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
- pnpm-lock.yaml
|
|
53
|
-
- bun.lock
|
|
54
|
-
- npm-ls.json
|
|
55
|
-
- Maven
|
|
56
|
-
- pom.xml
|
|
57
|
-
- ivy.xml
|
|
58
|
-
- build.gradle
|
|
59
|
-
- build.gradle.kts
|
|
60
|
-
- gradle-dependencies-q.txt
|
|
61
|
-
- maven-resolved-dependencies.txt
|
|
62
|
-
- sbt-update-full.txt
|
|
63
|
-
- maven-dependency-tree.txt
|
|
64
|
-
- maven-dependency-tree.dot
|
|
65
|
-
- gradle.lockfile
|
|
66
|
-
- verification-metadata.xml
|
|
67
|
-
- RubyGems
|
|
68
|
-
- Gemfile
|
|
69
|
-
- Gemfile.lock
|
|
70
|
-
- gems.rb
|
|
71
|
-
- gems.locked
|
|
72
|
-
- *.gemspec
|
|
73
|
-
- Packagist
|
|
74
|
-
- composer.json
|
|
75
|
-
- composer.lock
|
|
76
|
-
- PyPi
|
|
77
|
-
- setup.py
|
|
78
|
-
- req*.txt
|
|
79
|
-
- req*.pip
|
|
80
|
-
- requirements/*.txt
|
|
81
|
-
- requirements/*.pip
|
|
82
|
-
- requirements.frozen
|
|
83
|
-
- Pipfile
|
|
84
|
-
- Pipfile.lock
|
|
85
|
-
- pyproject.toml
|
|
86
|
-
- poetry.lock
|
|
87
|
-
- uv.lock
|
|
88
|
-
- pylock.toml
|
|
89
|
-
- pdm.lock
|
|
90
|
-
- pip-resolved-dependencies.txt
|
|
91
|
-
- pip-dependency-graph.json
|
|
92
|
-
- Nuget
|
|
93
|
-
- packages.config
|
|
94
|
-
- packages.lock.json
|
|
95
|
-
- Project.json
|
|
96
|
-
- Project.lock.json
|
|
97
|
-
- *.nuspec
|
|
98
|
-
- paket.lock
|
|
99
|
-
- *.csproj
|
|
100
|
-
- project.assets.json
|
|
101
|
-
- \*.deps.json
|
|
102
|
-
- Bower
|
|
103
|
-
- bower.json
|
|
104
|
-
- BentoML
|
|
105
|
-
- bentofile.yaml
|
|
106
|
-
- CPAN
|
|
107
|
-
- META.json
|
|
108
|
-
- META.yml
|
|
109
|
-
- cpanfile
|
|
110
|
-
- cpanfile.snapshot
|
|
111
|
-
- Makefile.PL
|
|
112
|
-
- Build.PL
|
|
113
|
-
- CocoaPods
|
|
114
|
-
- Podfile
|
|
115
|
-
- Podfile.lock
|
|
116
|
-
- *.podspec
|
|
117
|
-
- *.podspec.json
|
|
47
|
+
- Actions
|
|
48
|
+
- action.yml
|
|
49
|
+
- action.yaml
|
|
50
|
+
- .github/workflows/\*.yml
|
|
51
|
+
- .github/workflows/\*.yaml
|
|
118
52
|
- Anaconda
|
|
119
53
|
- environment.yml
|
|
120
54
|
- environment.yaml
|
|
55
|
+
- BentoML
|
|
56
|
+
- bentofile.yaml
|
|
57
|
+
- Bower
|
|
58
|
+
- bower.json
|
|
59
|
+
- Cargo
|
|
60
|
+
- Cargo.toml
|
|
61
|
+
- Cargo.lock
|
|
62
|
+
- Carthage
|
|
63
|
+
- Cartfile
|
|
64
|
+
- Cartfile.private
|
|
65
|
+
- Cartfile.resolved
|
|
121
66
|
- Clojars
|
|
122
67
|
- project.clj
|
|
68
|
+
- CocoaPods
|
|
69
|
+
- Podfile
|
|
70
|
+
- \*.podspec
|
|
71
|
+
- Podfile.lock
|
|
72
|
+
- \*.podspec.json
|
|
123
73
|
- Cog
|
|
124
74
|
- cog.yaml
|
|
125
75
|
- Conan
|
|
126
76
|
- conanfile.py
|
|
127
77
|
- conanfile.txt
|
|
128
78
|
- conan.lock
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
-
|
|
79
|
+
- CPAN
|
|
80
|
+
- META.json
|
|
81
|
+
- META.yml
|
|
82
|
+
- cpanfile
|
|
83
|
+
- cpanfile.snapshot
|
|
84
|
+
- Makefile.PL
|
|
85
|
+
- Build.PL
|
|
133
86
|
- CRAN
|
|
134
87
|
- DESCRIPTION
|
|
135
88
|
- renv.lock
|
|
136
|
-
-
|
|
137
|
-
-
|
|
138
|
-
-
|
|
139
|
-
-
|
|
140
|
-
|
|
141
|
-
-
|
|
142
|
-
-
|
|
143
|
-
- Package.swift
|
|
144
|
-
- Package.resolved
|
|
145
|
-
- Pub
|
|
146
|
-
- pubspec.yaml
|
|
147
|
-
- pubspec.lock
|
|
148
|
-
- Carthage
|
|
149
|
-
- Cartfile
|
|
150
|
-
- Cartfile.private
|
|
151
|
-
- Cartfile.resolved
|
|
89
|
+
- Deno
|
|
90
|
+
- deno.json
|
|
91
|
+
- deno.jsonc
|
|
92
|
+
- deno.lock
|
|
93
|
+
- Docker
|
|
94
|
+
- docker-compose\*.yml
|
|
95
|
+
- Dockerfile
|
|
152
96
|
- Dub
|
|
153
97
|
- dub.json
|
|
154
98
|
- dub.sdl
|
|
155
|
-
-
|
|
156
|
-
-
|
|
157
|
-
-
|
|
158
|
-
-
|
|
159
|
-
-
|
|
99
|
+
- DVC
|
|
100
|
+
- dvc.yaml
|
|
101
|
+
- Elm
|
|
102
|
+
- elm-package.json
|
|
103
|
+
- elm_dependencies.json
|
|
104
|
+
- elm-stuff/exact-dependencies.json
|
|
160
105
|
- Go
|
|
106
|
+
- go.mod
|
|
107
|
+
- go.sum
|
|
161
108
|
- glide.yaml
|
|
162
109
|
- glide.lock
|
|
163
|
-
- Godeps
|
|
164
110
|
- Godeps/Godeps.json
|
|
111
|
+
- Godeps
|
|
165
112
|
- vendor/manifest
|
|
166
113
|
- vendor/vendor.json
|
|
167
114
|
- Gopkg.toml
|
|
168
115
|
- Gopkg.lock
|
|
169
|
-
- go.mod
|
|
170
|
-
- go.sum
|
|
171
116
|
- go-resolved-dependencies.json
|
|
172
|
-
- Elm
|
|
173
|
-
- elm-package.json
|
|
174
|
-
- elm_dependencies.json
|
|
175
|
-
- elm-stuff/exact-dependencies.json
|
|
176
|
-
- Haxelib
|
|
177
|
-
- haxelib.json
|
|
178
117
|
- Hackage
|
|
179
118
|
- \*.cabal
|
|
180
|
-
- cabal.config
|
|
119
|
+
- \*cabal.config
|
|
181
120
|
- stack.yaml.lock
|
|
182
|
-
-
|
|
183
|
-
|
|
184
|
-
-
|
|
185
|
-
|
|
186
|
-
- .
|
|
187
|
-
-
|
|
188
|
-
-
|
|
189
|
-
-
|
|
190
|
-
-
|
|
191
|
-
- DVC
|
|
192
|
-
- dvc.yaml
|
|
193
|
-
- Vcpkg
|
|
194
|
-
- vcpkg.json
|
|
195
|
-
- _generated-vcpkg-list.json
|
|
121
|
+
- cabal.project.freeze
|
|
122
|
+
- Haxelib
|
|
123
|
+
- haxelib.json
|
|
124
|
+
- Hex
|
|
125
|
+
- mix.exs
|
|
126
|
+
- mix.lock
|
|
127
|
+
- gleam.toml
|
|
128
|
+
- manifest.toml
|
|
129
|
+
- rebar.lock
|
|
196
130
|
- Homebrew
|
|
197
131
|
- Brewfile
|
|
198
132
|
- Brewfile.lock.json
|
|
199
|
-
-
|
|
200
|
-
-
|
|
201
|
-
-
|
|
202
|
-
-
|
|
133
|
+
- Julia
|
|
134
|
+
- REQUIRE
|
|
135
|
+
- Project.toml
|
|
136
|
+
- Manifest.toml
|
|
203
137
|
- LuaRocks
|
|
204
138
|
- \*.rockspec
|
|
139
|
+
- Maven
|
|
140
|
+
- ivy.xml
|
|
141
|
+
- pom.xml
|
|
142
|
+
- build.gradle
|
|
143
|
+
- build.gradle.kts
|
|
144
|
+
- gradle-dependencies-q.txt
|
|
145
|
+
- maven-resolved-dependencies.txt
|
|
146
|
+
- sbt-update-full.txt
|
|
147
|
+
- maven-dependency-tree.txt
|
|
148
|
+
- maven-dependency-tree.dot
|
|
149
|
+
- gradle.lockfile
|
|
150
|
+
- verification-metadata.xml
|
|
151
|
+
- Meteor
|
|
152
|
+
- versions.json
|
|
153
|
+
- MLflow
|
|
154
|
+
- MLmodel
|
|
155
|
+
- Nimble
|
|
156
|
+
- \*.nimble
|
|
157
|
+
- Nix
|
|
158
|
+
- flake.nix
|
|
159
|
+
- flake.lock
|
|
160
|
+
- nix/sources.json
|
|
161
|
+
- npins/sources.json
|
|
162
|
+
- npm
|
|
163
|
+
- package.json
|
|
164
|
+
- package-lock.json
|
|
165
|
+
- npm-shrinkwrap.json
|
|
166
|
+
- yarn.lock
|
|
167
|
+
- pnpm-lock.yaml
|
|
168
|
+
- bun.lock
|
|
169
|
+
- npm-ls.json
|
|
170
|
+
- Nuget
|
|
171
|
+
- Project.json
|
|
172
|
+
- Project.lock.json
|
|
173
|
+
- packages.lock.json
|
|
174
|
+
- packages.config
|
|
175
|
+
- \*.nuspec
|
|
176
|
+
- \*.csproj
|
|
177
|
+
- paket.lock
|
|
178
|
+
- project.assets.json
|
|
179
|
+
- \*.deps.json
|
|
180
|
+
- Ollama
|
|
181
|
+
- Modelfile
|
|
182
|
+
- Packagist
|
|
183
|
+
- composer.json
|
|
184
|
+
- composer.lock
|
|
185
|
+
- Pub
|
|
186
|
+
- pubspec.yaml
|
|
187
|
+
- pubspec.lock
|
|
188
|
+
- PyPi
|
|
189
|
+
- setup.py
|
|
190
|
+
- requirements\*.txt
|
|
191
|
+
- requirements\*.pip
|
|
192
|
+
- requirements\*.in
|
|
193
|
+
- requirements.frozen
|
|
194
|
+
- Pipfile
|
|
195
|
+
- Pipfile.lock
|
|
196
|
+
- pyproject.toml
|
|
197
|
+
- poetry.lock
|
|
198
|
+
- uv.lock
|
|
199
|
+
- pylock.toml
|
|
200
|
+
- pdm.lock
|
|
201
|
+
- pip-resolved-dependencies.txt
|
|
202
|
+
- pip-dependency-graph.json
|
|
203
|
+
- RubyGems
|
|
204
|
+
- Gemfile
|
|
205
|
+
- Gemfile.lock
|
|
206
|
+
- gems.rb
|
|
207
|
+
- gems.locked
|
|
208
|
+
- \*.gemspec
|
|
209
|
+
- Shards
|
|
210
|
+
- shard.yml
|
|
211
|
+
- shard.lock
|
|
212
|
+
- Swift
|
|
213
|
+
- Package.swift
|
|
214
|
+
- Package.resolved
|
|
215
|
+
- Vcpkg
|
|
216
|
+
- vcpkg.json
|
|
217
|
+
- _generated-vcpkg-list.json
|
|
205
218
|
|
|
206
219
|
## Development
|
|
207
220
|
|
|
@@ -43,6 +43,10 @@ module Bibliothecary
|
|
|
43
43
|
@platform_name ||= name.to_s.split("::").last.downcase.freeze
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
+
def file_patterns
|
|
47
|
+
[]
|
|
48
|
+
end
|
|
49
|
+
|
|
46
50
|
def map_dependencies(hash, key, type, source = nil)
|
|
47
51
|
hash.fetch(key, []).map do |name, requirement|
|
|
48
52
|
Dependency.new(
|
|
@@ -7,6 +7,10 @@ module Bibliothecary
|
|
|
7
7
|
|
|
8
8
|
WORKFLOW_REGEX = /^\.github\/workflows\/.*.y(a)?ml/
|
|
9
9
|
|
|
10
|
+
def self.file_patterns
|
|
11
|
+
["action.yml", "action.yaml", ".github/workflows/*.yml", ".github/workflows/*.yaml"]
|
|
12
|
+
end
|
|
13
|
+
|
|
10
14
|
def self.mapping
|
|
11
15
|
{
|
|
12
16
|
match_filenames("action.yml","action.yaml") => {
|
|
@@ -15,6 +15,10 @@ module Bibliothecary
|
|
|
15
15
|
# Group 4: unquoted requirement (e.g., >= 1.0, ~> 2.0)
|
|
16
16
|
CARTFILE_REGEXP = /^(github|git|binary)\s+"([^"]+)"(?:\s+(?:"([^"]+)"|((?:>=|<=|~>|==|>|<)\s*[\d.]+)))?/
|
|
17
17
|
|
|
18
|
+
def self.file_patterns
|
|
19
|
+
["Cartfile", "Cartfile.private", "Cartfile.resolved"]
|
|
20
|
+
end
|
|
21
|
+
|
|
18
22
|
def self.mapping
|
|
19
23
|
{
|
|
20
24
|
match_filename("Cartfile") => {
|
|
@@ -7,6 +7,10 @@ module Bibliothecary
|
|
|
7
7
|
# Name can be like: org.clojure/clojure, cheshire, ring/ring-defaults
|
|
8
8
|
DEPENDENCY_REGEXP = %r{\[([a-zA-Z0-9_./\-]+)\s+"([^"]+)"\]}
|
|
9
9
|
|
|
10
|
+
def self.file_patterns
|
|
11
|
+
["project.clj"]
|
|
12
|
+
end
|
|
13
|
+
|
|
10
14
|
def self.mapping
|
|
11
15
|
{
|
|
12
16
|
match_filename("project.clj") => {
|
|
@@ -17,6 +17,10 @@ module Bibliothecary
|
|
|
17
17
|
# Podspec pattern: .dependency "Name", "version"
|
|
18
18
|
PODSPEC_DEPENDENCY = /\.dependency\s+['"]([^'"]+)['"]\s*(?:,\s*['"]([^'"]+)['"])?/
|
|
19
19
|
|
|
20
|
+
def self.file_patterns
|
|
21
|
+
["Podfile", "*.podspec", "Podfile.lock", "*.podspec.json"]
|
|
22
|
+
end
|
|
23
|
+
|
|
20
24
|
def self.mapping
|
|
21
25
|
{
|
|
22
26
|
match_filename("Podfile") => {
|
|
@@ -8,6 +8,10 @@ module Bibliothecary
|
|
|
8
8
|
class CPAN
|
|
9
9
|
include Bibliothecary::Analyser
|
|
10
10
|
|
|
11
|
+
def self.file_patterns
|
|
12
|
+
["META.json", "META.yml", "cpanfile", "cpanfile.snapshot", "Makefile.PL", "Build.PL"]
|
|
13
|
+
end
|
|
14
|
+
|
|
11
15
|
def self.mapping
|
|
12
16
|
{
|
|
13
17
|
match_filename("META.json", case_insensitive: true) => {
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "json"
|
|
4
|
+
|
|
5
|
+
module Bibliothecary
|
|
6
|
+
module Parsers
|
|
7
|
+
class Deno
|
|
8
|
+
include Bibliothecary::Analyser
|
|
9
|
+
|
|
10
|
+
def self.file_patterns
|
|
11
|
+
["deno.json", "deno.jsonc", "deno.lock"]
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def self.mapping
|
|
15
|
+
{
|
|
16
|
+
match_filename("deno.json") => {
|
|
17
|
+
kind: "manifest",
|
|
18
|
+
parser: :parse_manifest,
|
|
19
|
+
},
|
|
20
|
+
match_filename("deno.jsonc") => {
|
|
21
|
+
kind: "manifest",
|
|
22
|
+
parser: :parse_manifest,
|
|
23
|
+
},
|
|
24
|
+
match_filename("deno.lock") => {
|
|
25
|
+
kind: "lockfile",
|
|
26
|
+
parser: :parse_lockfile,
|
|
27
|
+
},
|
|
28
|
+
}
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.parse_manifest(file_contents, options: {})
|
|
32
|
+
manifest = JSON.parse(file_contents)
|
|
33
|
+
source = options.fetch(:filename, nil)
|
|
34
|
+
|
|
35
|
+
dependencies = manifest.fetch("imports", {}).map do |alias_name, specifier|
|
|
36
|
+
name, requirement = parse_specifier(specifier)
|
|
37
|
+
next unless name
|
|
38
|
+
|
|
39
|
+
Dependency.new(
|
|
40
|
+
name: name,
|
|
41
|
+
requirement: requirement,
|
|
42
|
+
type: "runtime",
|
|
43
|
+
source: source,
|
|
44
|
+
platform: platform_name
|
|
45
|
+
)
|
|
46
|
+
end.compact
|
|
47
|
+
|
|
48
|
+
ParserResult.new(dependencies: dependencies)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def self.parse_lockfile(file_contents, options: {})
|
|
52
|
+
manifest = JSON.parse(file_contents)
|
|
53
|
+
source = options.fetch(:filename, nil)
|
|
54
|
+
|
|
55
|
+
dependencies = manifest.fetch("specifiers", {}).map do |specifier, resolved_version|
|
|
56
|
+
name, _requirement = parse_specifier(specifier)
|
|
57
|
+
next unless name
|
|
58
|
+
|
|
59
|
+
Dependency.new(
|
|
60
|
+
name: name,
|
|
61
|
+
requirement: resolved_version,
|
|
62
|
+
type: "runtime",
|
|
63
|
+
source: source,
|
|
64
|
+
platform: platform_name
|
|
65
|
+
)
|
|
66
|
+
end.compact
|
|
67
|
+
|
|
68
|
+
ParserResult.new(dependencies: dependencies)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Parses specifiers like:
|
|
72
|
+
# "npm:chalk@1" => ["chalk", "1"]
|
|
73
|
+
# "npm:chalk" => ["chalk", "*"]
|
|
74
|
+
# "jsr:@std/path@^1" => ["@std/path", "^1"]
|
|
75
|
+
# "jsr:@std/path" => ["@std/path", "*"]
|
|
76
|
+
def self.parse_specifier(specifier)
|
|
77
|
+
return nil unless specifier.start_with?("npm:", "jsr:")
|
|
78
|
+
|
|
79
|
+
# Remove the protocol prefix
|
|
80
|
+
without_protocol = specifier.sub(/^(npm|jsr):/, "")
|
|
81
|
+
|
|
82
|
+
# Handle scoped packages (@scope/name@version)
|
|
83
|
+
if without_protocol.start_with?("@")
|
|
84
|
+
# Split on @ but keep the first @ for the scope
|
|
85
|
+
parts = without_protocol[1..].split("@", 2)
|
|
86
|
+
name = "@#{parts[0]}"
|
|
87
|
+
requirement = parts[1] || "*"
|
|
88
|
+
else
|
|
89
|
+
# Regular package (name@version)
|
|
90
|
+
name, requirement = without_protocol.split("@", 2)
|
|
91
|
+
requirement ||= "*"
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
[name, requirement]
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -7,6 +7,10 @@ module Bibliothecary
|
|
|
7
7
|
class Elm
|
|
8
8
|
include Bibliothecary::Analyser
|
|
9
9
|
|
|
10
|
+
def self.file_patterns
|
|
11
|
+
["elm-package.json", "elm_dependencies.json", "elm-stuff/exact-dependencies.json"]
|
|
12
|
+
end
|
|
13
|
+
|
|
10
14
|
def self.mapping
|
|
11
15
|
{
|
|
12
16
|
match_filenames("elm-package.json", "elm_dependencies.json") => {
|
|
@@ -18,6 +18,10 @@ module Bibliothecary
|
|
|
18
18
|
GOMOD_MULTILINE_END_REGEXP = /^\)/
|
|
19
19
|
GOSUM_REGEXP = /^(.+)\s+(.+)\s+(.+)$/
|
|
20
20
|
|
|
21
|
+
def self.file_patterns
|
|
22
|
+
["go.mod", "go.sum", "glide.yaml", "glide.lock", "Godeps/Godeps.json", "Godeps", "vendor/manifest", "vendor/vendor.json", "Gopkg.toml", "Gopkg.lock", "go-resolved-dependencies.json"]
|
|
23
|
+
end
|
|
24
|
+
|
|
21
25
|
def self.mapping
|
|
22
26
|
{
|
|
23
27
|
# Go Modules (recommended)
|