dependabot-bundler 0.164.1 → 0.165.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: 31a9f34a69c90815aa74984227c2f27cac397dbd8abc4fe3bca14bb179f7401f
4
- data.tar.gz: 14b4a59b645d3b59529a16fc110fc631e91643b08e8a5be42aff8c1a3ed3b6de
3
+ metadata.gz: 218f816762d901aa6fcaba4d136b78265732cbd17d757116664c8b3a705d5c8f
4
+ data.tar.gz: c3cdf83a8d4821bf784efee059459cb7031b10b73417abb6240a73e0ee93773c
5
5
  SHA512:
6
- metadata.gz: 7dd7b6eabf78ac0c18c2555d39745e90328212f5bee4c003063763ba2d647f965a7cbc79f7cd35198fa8abad222eebe78ae0ff5f301c90b3891c1f5ce6401c10
7
- data.tar.gz: cc0d02dd1e7fa6065106fbc3ecbe210f8734d6c1989badeede68b9166f9f05362fb5a83caca7c8f5d19f504b628599574921f89e515948ccfc0ac189ada2a94e
6
+ metadata.gz: 69df0390f761c7d580261008a007e9054805c867c383046a3206f1e5b7a5c49c39b8d346727be5128e21c22bf368cbbd11869589e0ac538aaa669413337ebac0
7
+ data.tar.gz: 1b7f800c8b40b2c3231ae3ee992d97d3b0422b859ad8acd66960cba2e747c8e1f5b188e41a6565857447b6d9164a856d0e4d38387236c0fcb896f4b1c486a305
data/helpers/v1/run.rb CHANGED
@@ -6,6 +6,11 @@ require "json"
6
6
  $LOAD_PATH.unshift(File.expand_path("./lib", __dir__))
7
7
  $LOAD_PATH.unshift(File.expand_path("./monkey_patches", __dir__))
8
8
 
9
+ trap "HUP" do
10
+ puts JSON.generate(error: "timeout", error_class: "Timeout::Error", trace: [])
11
+ exit 2
12
+ end
13
+
9
14
  # Bundler monkey patches
10
15
  require "definition_ruby_version_patch"
11
16
  require "definition_bundler_version_patch"
data/helpers/v2/run.rb CHANGED
@@ -6,6 +6,11 @@ require "json"
6
6
  $LOAD_PATH.unshift(File.expand_path("./lib", __dir__))
7
7
  $LOAD_PATH.unshift(File.expand_path("./monkey_patches", __dir__))
8
8
 
9
+ trap "HUP" do
10
+ puts JSON.generate(error: "timeout", error_class: "Timeout::Error", trace: [])
11
+ exit 2
12
+ end
13
+
9
14
  # Bundler monkey patches
10
15
  require "definition_ruby_version_patch"
11
16
  require "definition_bundler_version_patch"
@@ -145,6 +145,7 @@ module Dependabot
145
145
  NativeHelpers.run_bundler_subprocess(
146
146
  bundler_version: bundler_version,
147
147
  function: "parsed_gemfile",
148
+ options: options,
148
149
  args: {
149
150
  gemfile_name: gemfile.name,
150
151
  lockfile_name: lockfile&.name,
@@ -175,6 +176,7 @@ module Dependabot
175
176
  NativeHelpers.run_bundler_subprocess(
176
177
  bundler_version: bundler_version,
177
178
  function: "parsed_gemspec",
179
+ options: options,
178
180
  args: {
179
181
  gemspec_name: file.name,
180
182
  lockfile_name: lockfile&.name,
@@ -69,6 +69,7 @@ module Dependabot
69
69
  NativeHelpers.run_bundler_subprocess(
70
70
  bundler_version: bundler_version,
71
71
  function: "update_lockfile",
72
+ options: options,
72
73
  args: {
73
74
  gemfile_name: gemfile.name,
74
75
  lockfile_name: lockfile.name,
@@ -79,6 +79,7 @@ module Dependabot
79
79
  NativeHelpers.run_bundler_subprocess(
80
80
  bundler_version: bundler_version,
81
81
  function: "vendor_cache_dir",
82
+ options: options,
82
83
  args: {
83
84
  dir: repo_contents_path
84
85
  }
@@ -6,20 +6,51 @@ require "dependabot/shared_helpers"
6
6
  module Dependabot
7
7
  module Bundler
8
8
  module NativeHelpers
9
- def self.run_bundler_subprocess(function:, args:, bundler_version:)
9
+ class BundleCommand
10
+ MAX_SECONDS = 1800
11
+ MIN_SECONDS = 60
12
+
13
+ def initialize(timeout_seconds)
14
+ @timeout_seconds = clamp(timeout_seconds)
15
+ end
16
+
17
+ def build(script)
18
+ [timeout_command, :bundle, :exec, :ruby, script].compact.join(" ")
19
+ end
20
+
21
+ private
22
+
23
+ attr_reader :timeout_seconds
24
+
25
+ def timeout_command
26
+ "timeout -s HUP #{timeout_seconds}" unless timeout_seconds.zero?
27
+ end
28
+
29
+ def clamp(seconds)
30
+ return 0 unless seconds
31
+
32
+ seconds.to_i.clamp(MIN_SECONDS, MAX_SECONDS)
33
+ end
34
+ end
35
+
36
+ def self.run_bundler_subprocess(function:, args:, bundler_version:, options: {})
10
37
  # Run helper suprocess with all bundler-related ENV variables removed
11
38
  bundler_major_version = bundler_version.split(".").first
39
+ helpers_path = versioned_helper_path(bundler_version: bundler_major_version)
12
40
  ::Bundler.with_original_env do
41
+ command = BundleCommand.
42
+ new(options[:timeout_per_operation_seconds]).
43
+ build(File.join(helpers_path, "run.rb"))
13
44
  SharedHelpers.run_helper_subprocess(
14
- command: helper_path(bundler_version: bundler_major_version),
45
+ command: command,
15
46
  function: function,
16
47
  args: args,
17
48
  env: {
18
49
  # Bundler will pick the matching installed major version
19
50
  "BUNDLER_VERSION" => bundler_version,
20
- "BUNDLE_GEMFILE" => File.join(versioned_helper_path(bundler_version: bundler_major_version), "Gemfile"),
51
+ "BUNDLE_GEMFILE" => File.join(helpers_path, "Gemfile"),
21
52
  # Prevent the GEM_HOME from being set to a folder owned by root
22
- "GEM_HOME" => File.join(versioned_helper_path(bundler_version: bundler_major_version), ".bundle")
53
+ "GEM_HOME" => File.join(helpers_path, ".bundle")
23
54
  }
24
55
  )
25
56
  rescue SharedHelpers::HelperSubprocessFailed => e
@@ -31,12 +62,7 @@ module Dependabot
31
62
  end
32
63
 
33
64
  def self.versioned_helper_path(bundler_version:)
34
- native_helper_version = "v#{bundler_version}"
35
- File.join(native_helpers_root, native_helper_version)
36
- end
37
-
38
- def self.helper_path(bundler_version:)
39
- "bundle exec ruby #{File.join(versioned_helper_path(bundler_version: bundler_version), 'run.rb')}"
65
+ File.join(native_helpers_root, "v#{bundler_version}")
40
66
  end
41
67
 
42
68
  def self.native_helpers_root
@@ -35,6 +35,7 @@ module Dependabot
35
35
  NativeHelpers.run_bundler_subprocess(
36
36
  bundler_version: bundler_version,
37
37
  function: "conflicting_dependencies",
38
+ options: options,
38
39
  args: {
39
40
  dir: tmp_dir,
40
41
  dependency_name: dependency.name,
@@ -50,6 +50,7 @@ module Dependabot
50
50
  updated_deps, specs = NativeHelpers.run_bundler_subprocess(
51
51
  bundler_version: bundler_version,
52
52
  function: "force_update",
53
+ options: options,
53
54
  args: {
54
55
  dir: tmp_dir,
55
56
  dependency_name: dependency.name,
@@ -61,6 +61,7 @@ module Dependabot
61
61
  NativeHelpers.run_bundler_subprocess(
62
62
  bundler_version: bundler_version,
63
63
  function: "depencency_source_latest_git_version",
64
+ options: options,
64
65
  args: {
65
66
  dir: tmp_dir,
66
67
  gemfile_name: gemfile.name,
@@ -106,6 +107,7 @@ module Dependabot
106
107
  NativeHelpers.run_bundler_subprocess(
107
108
  bundler_version: bundler_version,
108
109
  function: "private_registry_versions",
110
+ options: options,
109
111
  args: {
110
112
  dir: tmp_dir,
111
113
  gemfile_name: gemfile.name,
@@ -126,6 +128,7 @@ module Dependabot
126
128
  NativeHelpers.run_bundler_subprocess(
127
129
  bundler_version: bundler_version,
128
130
  function: "dependency_source_type",
131
+ options: options,
129
132
  args: {
130
133
  dir: tmp_dir,
131
134
  gemfile_name: gemfile.name,
@@ -167,6 +167,7 @@ module Dependabot
167
167
  git_specs = NativeHelpers.run_bundler_subprocess(
168
168
  bundler_version: bundler_version,
169
169
  function: "git_specs",
170
+ options: options,
170
171
  args: {
171
172
  dir: tmp_dir,
172
173
  gemfile_name: gemfile.name,
@@ -195,6 +196,7 @@ module Dependabot
195
196
  NativeHelpers.run_bundler_subprocess(
196
197
  bundler_version: bundler_version,
197
198
  function: "jfrog_source",
199
+ options: options,
198
200
  args: {
199
201
  dir: dir,
200
202
  gemfile_name: gemfile.name,
@@ -82,6 +82,7 @@ module Dependabot
82
82
  details = NativeHelpers.run_bundler_subprocess(
83
83
  bundler_version: bundler_version,
84
84
  function: "resolve_version",
85
+ options: options,
85
86
  args: {
86
87
  dependency_name: dependency.name,
87
88
  dependency_requirements: dependency.requirements,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-bundler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.164.1
4
+ version: 0.165.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-02 00:00:00.000000000 Z
11
+ date: 2021-11-08 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.164.1
19
+ version: 0.165.0
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.164.1
26
+ version: 0.165.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: byebug
29
29
  requirement: !ruby/object:Gem::Requirement