dependabot-bun 0.296.0 → 0.296.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dependabot/bun.rb +12 -2
- data/lib/dependabot/javascript/bun/file_fetcher.rb +77 -0
- data/lib/dependabot/javascript/bun/file_parser/bun_lock.rb +156 -0
- data/lib/dependabot/javascript/bun/file_parser/lockfile_parser.rb +55 -0
- data/lib/dependabot/javascript/bun/file_parser.rb +74 -0
- data/lib/dependabot/javascript/bun/file_updater/lockfile_updater.rb +138 -0
- data/lib/dependabot/javascript/bun/file_updater.rb +75 -0
- data/lib/dependabot/javascript/bun/helpers.rb +72 -0
- data/lib/dependabot/javascript/bun/package_manager.rb +48 -0
- data/lib/dependabot/javascript/bun/requirement.rb +11 -0
- data/lib/dependabot/javascript/bun/update_checker/conflicting_dependency_resolver.rb +64 -0
- data/lib/dependabot/javascript/bun/update_checker/dependency_files_builder.rb +47 -0
- data/lib/dependabot/javascript/bun/update_checker/latest_version_finder.rb +450 -0
- data/lib/dependabot/javascript/bun/update_checker/library_detector.rb +76 -0
- data/lib/dependabot/javascript/bun/update_checker/requirements_updater.rb +203 -0
- data/lib/dependabot/javascript/bun/update_checker/subdependency_version_resolver.rb +144 -0
- data/lib/dependabot/javascript/bun/update_checker/version_resolver.rb +525 -0
- data/lib/dependabot/javascript/bun/update_checker/vulnerability_auditor.rb +165 -0
- data/lib/dependabot/javascript/bun/update_checker.rb +440 -0
- data/lib/dependabot/javascript/bun/version.rb +11 -0
- data/lib/dependabot/javascript/shared/constraint_helper.rb +359 -0
- data/lib/dependabot/javascript/shared/dependency_files_filterer.rb +164 -0
- data/lib/dependabot/javascript/shared/file_fetcher.rb +283 -0
- data/lib/dependabot/javascript/shared/file_parser/lockfile_parser.rb +106 -0
- data/lib/dependabot/javascript/shared/file_parser.rb +454 -0
- data/lib/dependabot/javascript/shared/file_updater/npmrc_builder.rb +394 -0
- data/lib/dependabot/javascript/shared/file_updater/package_json_preparer.rb +87 -0
- data/lib/dependabot/javascript/shared/file_updater/package_json_updater.rb +376 -0
- data/lib/dependabot/javascript/shared/file_updater.rb +179 -0
- data/lib/dependabot/javascript/shared/language.rb +45 -0
- data/lib/dependabot/javascript/shared/metadata_finder.rb +209 -0
- data/lib/dependabot/javascript/shared/native_helpers.rb +21 -0
- data/lib/dependabot/javascript/shared/package_manager_detector.rb +72 -0
- data/lib/dependabot/javascript/shared/package_name.rb +118 -0
- data/lib/dependabot/javascript/shared/registry_helper.rb +190 -0
- data/lib/dependabot/javascript/shared/registry_parser.rb +93 -0
- data/lib/dependabot/javascript/shared/requirement.rb +144 -0
- data/lib/dependabot/javascript/shared/sub_dependency_files_filterer.rb +79 -0
- data/lib/dependabot/javascript/shared/update_checker/dependency_files_builder.rb +87 -0
- data/lib/dependabot/javascript/shared/update_checker/registry_finder.rb +358 -0
- data/lib/dependabot/javascript/shared/version.rb +133 -0
- data/lib/dependabot/javascript/shared/version_selector.rb +60 -0
- data/lib/dependabot/javascript.rb +31 -0
- metadata +48 -17
- data/lib/dependabot/bun/file_fetcher.rb +0 -97
- data/lib/dependabot/bun/file_parser/bun_lock.rb +0 -148
- data/lib/dependabot/bun/helpers.rb +0 -79
- data/lib/dependabot/bun/language.rb +0 -45
- data/lib/dependabot/bun/package_manager.rb +0 -46
- data/lib/dependabot/bun/requirement.rb +0 -14
- data/lib/dependabot/bun/version.rb +0 -12
- data/lib/dependabot/javascript/file_fetcher_helper.rb +0 -245
- data/lib/dependabot/javascript/requirement.rb +0 -141
- data/lib/dependabot/javascript/version.rb +0 -135
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dependabot-bun
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.296.
|
4
|
+
version: 0.296.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dependabot
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-02-
|
11
|
+
date: 2025-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dependabot-common
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.296.
|
19
|
+
version: 0.296.2
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.296.
|
26
|
+
version: 0.296.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: zeitwerk
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -249,7 +249,7 @@ dependencies:
|
|
249
249
|
- !ruby/object:Gem::Version
|
250
250
|
version: '1.7'
|
251
251
|
description: Dependabot-bun provides support for bumping Javascript libraries using
|
252
|
-
bun via Dependabot.
|
252
|
+
bun via Dependabot.If you want support for multiple package managers, you probably
|
253
253
|
want the meta-gem dependabot-omnibus.
|
254
254
|
email: opensource@github.com
|
255
255
|
executables: []
|
@@ -257,23 +257,54 @@ extensions: []
|
|
257
257
|
extra_rdoc_files: []
|
258
258
|
files:
|
259
259
|
- lib/dependabot/bun.rb
|
260
|
-
- lib/dependabot/bun/file_fetcher.rb
|
261
|
-
- lib/dependabot/bun/file_parser/bun_lock.rb
|
262
|
-
- lib/dependabot/bun/helpers.rb
|
263
|
-
- lib/dependabot/bun/language.rb
|
264
|
-
- lib/dependabot/bun/package_manager.rb
|
265
|
-
- lib/dependabot/bun/requirement.rb
|
266
|
-
- lib/dependabot/bun/version.rb
|
267
260
|
- lib/dependabot/javascript.rb
|
268
|
-
- lib/dependabot/javascript/
|
269
|
-
- lib/dependabot/javascript/
|
270
|
-
- lib/dependabot/javascript/
|
261
|
+
- lib/dependabot/javascript/bun/file_fetcher.rb
|
262
|
+
- lib/dependabot/javascript/bun/file_parser.rb
|
263
|
+
- lib/dependabot/javascript/bun/file_parser/bun_lock.rb
|
264
|
+
- lib/dependabot/javascript/bun/file_parser/lockfile_parser.rb
|
265
|
+
- lib/dependabot/javascript/bun/file_updater.rb
|
266
|
+
- lib/dependabot/javascript/bun/file_updater/lockfile_updater.rb
|
267
|
+
- lib/dependabot/javascript/bun/helpers.rb
|
268
|
+
- lib/dependabot/javascript/bun/package_manager.rb
|
269
|
+
- lib/dependabot/javascript/bun/requirement.rb
|
270
|
+
- lib/dependabot/javascript/bun/update_checker.rb
|
271
|
+
- lib/dependabot/javascript/bun/update_checker/conflicting_dependency_resolver.rb
|
272
|
+
- lib/dependabot/javascript/bun/update_checker/dependency_files_builder.rb
|
273
|
+
- lib/dependabot/javascript/bun/update_checker/latest_version_finder.rb
|
274
|
+
- lib/dependabot/javascript/bun/update_checker/library_detector.rb
|
275
|
+
- lib/dependabot/javascript/bun/update_checker/requirements_updater.rb
|
276
|
+
- lib/dependabot/javascript/bun/update_checker/subdependency_version_resolver.rb
|
277
|
+
- lib/dependabot/javascript/bun/update_checker/version_resolver.rb
|
278
|
+
- lib/dependabot/javascript/bun/update_checker/vulnerability_auditor.rb
|
279
|
+
- lib/dependabot/javascript/bun/version.rb
|
280
|
+
- lib/dependabot/javascript/shared/constraint_helper.rb
|
281
|
+
- lib/dependabot/javascript/shared/dependency_files_filterer.rb
|
282
|
+
- lib/dependabot/javascript/shared/file_fetcher.rb
|
283
|
+
- lib/dependabot/javascript/shared/file_parser.rb
|
284
|
+
- lib/dependabot/javascript/shared/file_parser/lockfile_parser.rb
|
285
|
+
- lib/dependabot/javascript/shared/file_updater.rb
|
286
|
+
- lib/dependabot/javascript/shared/file_updater/npmrc_builder.rb
|
287
|
+
- lib/dependabot/javascript/shared/file_updater/package_json_preparer.rb
|
288
|
+
- lib/dependabot/javascript/shared/file_updater/package_json_updater.rb
|
289
|
+
- lib/dependabot/javascript/shared/language.rb
|
290
|
+
- lib/dependabot/javascript/shared/metadata_finder.rb
|
291
|
+
- lib/dependabot/javascript/shared/native_helpers.rb
|
292
|
+
- lib/dependabot/javascript/shared/package_manager_detector.rb
|
293
|
+
- lib/dependabot/javascript/shared/package_name.rb
|
294
|
+
- lib/dependabot/javascript/shared/registry_helper.rb
|
295
|
+
- lib/dependabot/javascript/shared/registry_parser.rb
|
296
|
+
- lib/dependabot/javascript/shared/requirement.rb
|
297
|
+
- lib/dependabot/javascript/shared/sub_dependency_files_filterer.rb
|
298
|
+
- lib/dependabot/javascript/shared/update_checker/dependency_files_builder.rb
|
299
|
+
- lib/dependabot/javascript/shared/update_checker/registry_finder.rb
|
300
|
+
- lib/dependabot/javascript/shared/version.rb
|
301
|
+
- lib/dependabot/javascript/shared/version_selector.rb
|
271
302
|
homepage: https://github.com/dependabot/dependabot-core
|
272
303
|
licenses:
|
273
304
|
- MIT
|
274
305
|
metadata:
|
275
306
|
bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
|
276
|
-
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.296.
|
307
|
+
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.296.2
|
277
308
|
post_install_message:
|
278
309
|
rdoc_options: []
|
279
310
|
require_paths:
|
@@ -292,5 +323,5 @@ requirements: []
|
|
292
323
|
rubygems_version: 3.5.22
|
293
324
|
signing_key:
|
294
325
|
specification_version: 4
|
295
|
-
summary: Provides Dependabot support for
|
326
|
+
summary: Provides Dependabot support for bun
|
296
327
|
test_files: []
|
@@ -1,97 +0,0 @@
|
|
1
|
-
# typed: strong
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
module Dependabot
|
5
|
-
module Bun
|
6
|
-
class FileFetcher < Dependabot::FileFetchers::Base
|
7
|
-
include Javascript::FileFetcherHelper
|
8
|
-
extend T::Sig
|
9
|
-
extend T::Helpers
|
10
|
-
|
11
|
-
sig { override.params(filenames: T::Array[String]).returns(T::Boolean) }
|
12
|
-
def self.required_files_in?(filenames)
|
13
|
-
filenames.include?("package.json")
|
14
|
-
end
|
15
|
-
|
16
|
-
sig { override.returns(String) }
|
17
|
-
def self.required_files_message
|
18
|
-
"Repo must contain a package.json."
|
19
|
-
end
|
20
|
-
|
21
|
-
sig { override.returns(T.nilable(T::Hash[Symbol, T.untyped])) }
|
22
|
-
def ecosystem_versions
|
23
|
-
return unknown_ecosystem_versions unless ecosystem_enabled?
|
24
|
-
|
25
|
-
{
|
26
|
-
package_managers: {
|
27
|
-
"bun" => 1
|
28
|
-
}
|
29
|
-
}
|
30
|
-
end
|
31
|
-
|
32
|
-
sig { override.returns(T::Array[DependencyFile]) }
|
33
|
-
def fetch_files
|
34
|
-
fetched_files = T.let([], T::Array[DependencyFile])
|
35
|
-
fetched_files << package_json(self)
|
36
|
-
fetched_files += bun_files if ecosystem_enabled?
|
37
|
-
fetched_files += workspace_package_jsons(self)
|
38
|
-
fetched_files += path_dependencies(self, fetched_files)
|
39
|
-
|
40
|
-
fetched_files.uniq
|
41
|
-
end
|
42
|
-
|
43
|
-
sig { params(filename: String, fetch_submodules: T::Boolean).returns(DependencyFile) }
|
44
|
-
def fetch_file(filename, fetch_submodules: false)
|
45
|
-
fetch_file_from_host(filename, fetch_submodules: fetch_submodules)
|
46
|
-
end
|
47
|
-
|
48
|
-
sig do
|
49
|
-
params(
|
50
|
-
dir: T.any(Pathname, String),
|
51
|
-
ignore_base_directory: T::Boolean,
|
52
|
-
raise_errors: T::Boolean,
|
53
|
-
fetch_submodules: T::Boolean
|
54
|
-
)
|
55
|
-
.returns(T::Array[T.untyped])
|
56
|
-
end
|
57
|
-
def fetch_repo_contents(dir: ".", ignore_base_directory: false, raise_errors: true, fetch_submodules: false)
|
58
|
-
repo_contents(dir: dir, ignore_base_directory:, raise_errors:, fetch_submodules:)
|
59
|
-
end
|
60
|
-
|
61
|
-
private
|
62
|
-
|
63
|
-
sig { returns(T::Array[DependencyFile]) }
|
64
|
-
def bun_files
|
65
|
-
[bun_lock].compact
|
66
|
-
end
|
67
|
-
|
68
|
-
sig { returns(T.nilable(DependencyFile)) }
|
69
|
-
def bun_lock
|
70
|
-
return @bun_lock if defined?(@bun_lock)
|
71
|
-
|
72
|
-
@bun_lock ||= T.let(fetch_file_if_present(PackageManager::LOCKFILE_NAME), T.nilable(DependencyFile))
|
73
|
-
|
74
|
-
return @bun_lock if @bun_lock || directory == "/"
|
75
|
-
|
76
|
-
@bun_lock = fetch_file_from_parent_directories(self, PackageManager::LOCKFILE_NAME)
|
77
|
-
end
|
78
|
-
|
79
|
-
sig { returns(T::Boolean) }
|
80
|
-
def ecosystem_enabled?
|
81
|
-
allow_beta_ecosystems? && Experiments.enabled?(:enable_bun_ecosystem)
|
82
|
-
end
|
83
|
-
|
84
|
-
sig { returns(T::Hash[Symbol, String]) }
|
85
|
-
def unknown_ecosystem_versions
|
86
|
-
{
|
87
|
-
package_managers: {
|
88
|
-
"unknown" => 0
|
89
|
-
}
|
90
|
-
}
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
Dependabot::FileFetchers
|
97
|
-
.register(Dependabot::Bun::ECOSYSTEM, Dependabot::Bun::FileFetcher)
|
@@ -1,148 +0,0 @@
|
|
1
|
-
# typed: strict
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require "yaml"
|
5
|
-
require "sorbet-runtime"
|
6
|
-
|
7
|
-
module Dependabot
|
8
|
-
module Bun
|
9
|
-
class FileParser < Dependabot::FileParsers::Base
|
10
|
-
class BunLock
|
11
|
-
extend T::Sig
|
12
|
-
|
13
|
-
sig { params(dependency_file: DependencyFile).void }
|
14
|
-
def initialize(dependency_file)
|
15
|
-
@dependency_file = dependency_file
|
16
|
-
end
|
17
|
-
|
18
|
-
sig { returns(T::Hash[String, T.untyped]) }
|
19
|
-
def parsed
|
20
|
-
@parsed ||= begin
|
21
|
-
content = begin
|
22
|
-
# Since bun.lock is a JSONC file, which is a subset of YAML, we can use YAML to parse it
|
23
|
-
YAML.load(T.must(@dependency_file.content))
|
24
|
-
rescue Psych::SyntaxError => e
|
25
|
-
raise_invalid!("malformed JSONC at line #{e.line}, column #{e.column}")
|
26
|
-
end
|
27
|
-
raise_invalid!("expected to be an object") unless content.is_a?(Hash)
|
28
|
-
|
29
|
-
version = content["lockfileVersion"]
|
30
|
-
raise_invalid!("expected 'lockfileVersion' to be an integer") unless version.is_a?(Integer)
|
31
|
-
raise_invalid!("expected 'lockfileVersion' to be >= 0") unless version >= 0
|
32
|
-
|
33
|
-
T.let(content, T.untyped)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
sig { returns(Dependabot::FileParsers::Base::DependencySet) }
|
38
|
-
def dependencies
|
39
|
-
dependency_set = Dependabot::FileParsers::Base::DependencySet.new
|
40
|
-
|
41
|
-
# bun.lock v0 format:
|
42
|
-
# https://github.com/oven-sh/bun/blob/c130df6c589fdf28f9f3c7f23ed9901140bc9349/src/install/bun.lock.zig#L595-L605
|
43
|
-
|
44
|
-
packages = parsed["packages"]
|
45
|
-
raise_invalid!("expected 'packages' to be an object") unless packages.is_a?(Hash)
|
46
|
-
|
47
|
-
packages.each do |key, details|
|
48
|
-
raise_invalid!("expected 'packages.#{key}' to be an array") unless details.is_a?(Array)
|
49
|
-
|
50
|
-
resolution = details.first
|
51
|
-
raise_invalid!("expected 'packages.#{key}[0]' to be a string") unless resolution.is_a?(String)
|
52
|
-
|
53
|
-
name, version = resolution.split(/(?<=\w)\@/)
|
54
|
-
next if name.empty?
|
55
|
-
|
56
|
-
semver = Version.semver_for(version)
|
57
|
-
next unless semver
|
58
|
-
|
59
|
-
dependency_set << Dependency.new(
|
60
|
-
name: name,
|
61
|
-
version: semver.to_s,
|
62
|
-
package_manager: "npm_and_yarn",
|
63
|
-
requirements: []
|
64
|
-
)
|
65
|
-
end
|
66
|
-
|
67
|
-
dependency_set
|
68
|
-
end
|
69
|
-
|
70
|
-
sig do
|
71
|
-
params(dependency_name: String, requirement: T.untyped, _manifest_name: String)
|
72
|
-
.returns(T.nilable(T::Hash[String, T.untyped]))
|
73
|
-
end
|
74
|
-
def details(dependency_name, requirement, _manifest_name)
|
75
|
-
packages = parsed["packages"]
|
76
|
-
return unless packages.is_a?(Hash)
|
77
|
-
|
78
|
-
candidates =
|
79
|
-
packages
|
80
|
-
.select { |name, _| name == dependency_name }
|
81
|
-
.values
|
82
|
-
|
83
|
-
# If there's only one entry for this dependency, use it, even if
|
84
|
-
# the requirement in the lockfile doesn't match
|
85
|
-
if candidates.one?
|
86
|
-
parse_details(candidates.first)
|
87
|
-
else
|
88
|
-
candidate = candidates.find do |label, _|
|
89
|
-
label.scan(/(?<=\w)\@(?:npm:)?([^\s,]+)/).flatten.include?(requirement)
|
90
|
-
end&.last
|
91
|
-
parse_details(candidate)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
private
|
96
|
-
|
97
|
-
sig { params(message: String).void }
|
98
|
-
def raise_invalid!(message)
|
99
|
-
raise Dependabot::DependencyFileNotParseable.new(@dependency_file.path, "Invalid bun.lock file: #{message}")
|
100
|
-
end
|
101
|
-
|
102
|
-
sig do
|
103
|
-
params(entry: T.nilable(T::Array[T.untyped])).returns(T.nilable(T::Hash[String, T.untyped]))
|
104
|
-
end
|
105
|
-
def parse_details(entry)
|
106
|
-
return unless entry.is_a?(Array)
|
107
|
-
|
108
|
-
# Either:
|
109
|
-
# - "{name}@{version}", registry, details, integrity
|
110
|
-
# - "{name}@{resolution}", details
|
111
|
-
resolution = entry.first
|
112
|
-
return unless resolution.is_a?(String)
|
113
|
-
|
114
|
-
name, version = resolution.split(/(?<=\w)\@/)
|
115
|
-
semver = Version.semver_for(version)
|
116
|
-
|
117
|
-
if semver
|
118
|
-
registry, details, integrity = entry[1..3]
|
119
|
-
{
|
120
|
-
"name" => name,
|
121
|
-
"version" => semver.to_s,
|
122
|
-
"registry" => registry,
|
123
|
-
"details" => details,
|
124
|
-
"integrity" => integrity
|
125
|
-
}
|
126
|
-
else
|
127
|
-
details = entry[1]
|
128
|
-
{
|
129
|
-
"name" => name,
|
130
|
-
"resolution" => version,
|
131
|
-
"details" => details
|
132
|
-
}
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
sig { override.returns(T::Array[Dependabot::Dependency]) }
|
138
|
-
def parse
|
139
|
-
[]
|
140
|
-
end
|
141
|
-
|
142
|
-
private
|
143
|
-
|
144
|
-
sig { override.void }
|
145
|
-
def check_required_files; end
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
@@ -1,79 +0,0 @@
|
|
1
|
-
# typed: strong
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
module Dependabot
|
5
|
-
module Bun
|
6
|
-
module Helpers
|
7
|
-
extend T::Sig
|
8
|
-
|
9
|
-
# BUN Version Constants
|
10
|
-
BUN_V1 = 1
|
11
|
-
BUN_DEFAULT_VERSION = BUN_V1
|
12
|
-
|
13
|
-
sig { params(_bun_lock: T.nilable(DependencyFile)).returns(Integer) }
|
14
|
-
def self.bun_version_numeric(_bun_lock)
|
15
|
-
BUN_DEFAULT_VERSION
|
16
|
-
end
|
17
|
-
|
18
|
-
sig { returns(T.nilable(String)) }
|
19
|
-
def self.bun_version
|
20
|
-
run_bun_command("--version", fingerprint: "--version").strip
|
21
|
-
rescue StandardError => e
|
22
|
-
Dependabot.logger.error("Error retrieving Bun version: #{e.message}")
|
23
|
-
nil
|
24
|
-
end
|
25
|
-
|
26
|
-
sig { params(command: String, fingerprint: T.nilable(String)).returns(String) }
|
27
|
-
def self.run_bun_command(command, fingerprint: nil)
|
28
|
-
full_command = "bun #{command}"
|
29
|
-
|
30
|
-
Dependabot.logger.info("Running bun command: #{full_command}")
|
31
|
-
|
32
|
-
result = Dependabot::SharedHelpers.run_shell_command(
|
33
|
-
full_command,
|
34
|
-
fingerprint: "bun #{fingerprint || command}"
|
35
|
-
)
|
36
|
-
|
37
|
-
Dependabot.logger.info("Command executed successfully: #{full_command}")
|
38
|
-
result
|
39
|
-
rescue StandardError => e
|
40
|
-
Dependabot.logger.error("Error running bun command: #{full_command}, Error: #{e.message}")
|
41
|
-
raise
|
42
|
-
end
|
43
|
-
|
44
|
-
# Fetch the currently installed version of the package manager directly
|
45
|
-
# from the system
|
46
|
-
sig { params(name: String).returns(String) }
|
47
|
-
def self.local_package_manager_version(name)
|
48
|
-
Dependabot::SharedHelpers.run_shell_command(
|
49
|
-
"#{name} -v",
|
50
|
-
fingerprint: "#{name} -v"
|
51
|
-
).strip
|
52
|
-
end
|
53
|
-
|
54
|
-
# Run single command on package manager returning stdout/stderr
|
55
|
-
sig do
|
56
|
-
params(
|
57
|
-
name: String,
|
58
|
-
command: String,
|
59
|
-
fingerprint: T.nilable(String)
|
60
|
-
).returns(String)
|
61
|
-
end
|
62
|
-
def self.package_manager_run_command(name, command, fingerprint: nil)
|
63
|
-
return run_bun_command(command, fingerprint: fingerprint) if name == PackageManager::NAME
|
64
|
-
|
65
|
-
# TODO: remove this method and just use the one in the PackageManager class
|
66
|
-
"noop"
|
67
|
-
end
|
68
|
-
|
69
|
-
sig { params(dependency_set: Dependabot::FileParsers::Base::DependencySet).returns(T::Array[Dependency]) }
|
70
|
-
def self.dependencies_with_all_versions_metadata(dependency_set)
|
71
|
-
# TODO: Check if we still need this method
|
72
|
-
dependency_set.dependencies.map do |dependency|
|
73
|
-
dependency.metadata[:all_versions] = dependency_set.all_versions_for_name(dependency.name)
|
74
|
-
dependency
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# typed: strong
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require "dependabot/npm_and_yarn/package_manager"
|
5
|
-
|
6
|
-
module Dependabot
|
7
|
-
module Bun
|
8
|
-
class Language < Ecosystem::VersionManager
|
9
|
-
extend T::Sig
|
10
|
-
NAME = "node"
|
11
|
-
|
12
|
-
SUPPORTED_VERSIONS = T.let([].freeze, T::Array[Dependabot::Version])
|
13
|
-
|
14
|
-
DEPRECATED_VERSIONS = T.let([].freeze, T::Array[Dependabot::Version])
|
15
|
-
|
16
|
-
sig do
|
17
|
-
params(
|
18
|
-
detected_version: T.nilable(String),
|
19
|
-
raw_version: T.nilable(String),
|
20
|
-
requirement: T.nilable(Dependabot::NpmAndYarn::Requirement)
|
21
|
-
).void
|
22
|
-
end
|
23
|
-
def initialize(detected_version: nil, raw_version: nil, requirement: nil)
|
24
|
-
super(
|
25
|
-
name: NAME,
|
26
|
-
detected_version: detected_version ? Version.new(detected_version) : nil,
|
27
|
-
version: raw_version ? Version.new(raw_version) : nil,
|
28
|
-
deprecated_versions: DEPRECATED_VERSIONS,
|
29
|
-
supported_versions: SUPPORTED_VERSIONS,
|
30
|
-
requirement: requirement
|
31
|
-
)
|
32
|
-
end
|
33
|
-
|
34
|
-
sig { override.returns(T::Boolean) }
|
35
|
-
def deprecated?
|
36
|
-
false
|
37
|
-
end
|
38
|
-
|
39
|
-
sig { override.returns(T::Boolean) }
|
40
|
-
def unsupported?
|
41
|
-
false
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
# typed: strong
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
module Dependabot
|
5
|
-
module Bun
|
6
|
-
class PackageManager < Ecosystem::VersionManager
|
7
|
-
extend T::Sig
|
8
|
-
NAME = "bun"
|
9
|
-
LOCKFILE_NAME = "bun.lock"
|
10
|
-
|
11
|
-
# In Bun 1.1.39, the lockfile format was changed from a binary bun.lockb to a text-based bun.lock.
|
12
|
-
# https://bun.sh/blog/bun-lock-text-lockfile
|
13
|
-
MIN_SUPPORTED_VERSION = T.let(Version.new("1.1.39"), Javascript::Version)
|
14
|
-
SUPPORTED_VERSIONS = T.let([MIN_SUPPORTED_VERSION].freeze, T::Array[Javascript::Version])
|
15
|
-
DEPRECATED_VERSIONS = T.let([].freeze, T::Array[Version])
|
16
|
-
|
17
|
-
sig do
|
18
|
-
params(
|
19
|
-
detected_version: T.nilable(String),
|
20
|
-
raw_version: T.nilable(String),
|
21
|
-
requirement: T.nilable(Requirement)
|
22
|
-
).void
|
23
|
-
end
|
24
|
-
def initialize(detected_version: nil, raw_version: nil, requirement: nil)
|
25
|
-
super(
|
26
|
-
name: NAME,
|
27
|
-
detected_version: detected_version ? Version.new(detected_version) : nil,
|
28
|
-
version: raw_version ? Version.new(raw_version) : nil,
|
29
|
-
deprecated_versions: DEPRECATED_VERSIONS,
|
30
|
-
supported_versions: SUPPORTED_VERSIONS,
|
31
|
-
requirement: requirement
|
32
|
-
)
|
33
|
-
end
|
34
|
-
|
35
|
-
sig { override.returns(T::Boolean) }
|
36
|
-
def deprecated?
|
37
|
-
false
|
38
|
-
end
|
39
|
-
|
40
|
-
sig { override.returns(T::Boolean) }
|
41
|
-
def unsupported?
|
42
|
-
false
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
# typed: strong
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
module Dependabot
|
5
|
-
module Bun
|
6
|
-
class Requirement < Dependabot::Javascript::Requirement
|
7
|
-
end
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
Dependabot::Utils.register_requirement_class(
|
12
|
-
"bun",
|
13
|
-
Dependabot::Bun::Requirement
|
14
|
-
)
|