dependabot-common 0.236.0 → 0.237.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,11 +1,37 @@
1
- # typed: true
1
+ # typed: strong
2
2
  # frozen_string_literal: true
3
3
 
4
+ require "sorbet-runtime"
5
+
4
6
  module Dependabot
5
7
  module Workspace
6
8
  class ChangeAttempt
7
- attr_reader :diff, :error, :id, :memo, :workspace
9
+ extend T::Sig
10
+
11
+ sig { returns(T.nilable(String)) }
12
+ attr_reader :diff
13
+
14
+ sig { returns(T.nilable(StandardError)) }
15
+ attr_reader :error
16
+
17
+ sig { returns(String) }
18
+ attr_reader :id
8
19
 
20
+ sig { returns(T.nilable(String)) }
21
+ attr_reader :memo
22
+
23
+ sig { returns(Dependabot::Workspace::Base) }
24
+ attr_reader :workspace
25
+
26
+ sig do
27
+ params(
28
+ workspace: Dependabot::Workspace::Base,
29
+ id: String,
30
+ memo: T.nilable(String),
31
+ diff: T.nilable(String),
32
+ error: T.nilable(StandardError)
33
+ ).void
34
+ end
9
35
  def initialize(workspace, id:, memo:, diff: nil, error: nil)
10
36
  @workspace = workspace
11
37
  @id = id
@@ -14,12 +40,14 @@ module Dependabot
14
40
  @error = error
15
41
  end
16
42
 
43
+ sig { returns(T::Boolean) }
17
44
  def success?
18
45
  error.nil?
19
46
  end
20
47
 
48
+ sig { returns(T::Boolean) }
21
49
  def error?
22
- error
50
+ !error.nil?
23
51
  end
24
52
  end
25
53
  end
@@ -1,31 +1,40 @@
1
- # typed: false
1
+ # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
+ require "sorbet-runtime"
4
5
  require "dependabot/workspace/base"
5
6
  require "dependabot/workspace/change_attempt"
6
7
 
7
8
  module Dependabot
8
9
  module Workspace
9
10
  class Git < Base
11
+ extend T::Sig
12
+ extend T::Helpers
13
+
10
14
  USER = "dependabot[bot]"
11
- EMAIL = "#{USER}@users.noreply.github.com".freeze
15
+ EMAIL = T.let("#{USER}@users.noreply.github.com".freeze, String)
12
16
 
17
+ sig { returns(String) }
13
18
  attr_reader :initial_head_sha
14
19
 
20
+ sig { params(path: T.any(Pathname, String)).void }
15
21
  def initialize(path)
16
22
  super(path)
17
- @initial_head_sha = head_sha
23
+ @initial_head_sha = T.let(head_sha, String)
18
24
  configure_git
19
25
  end
20
26
 
27
+ sig { returns(T::Boolean) }
21
28
  def changed?
22
29
  changes.any? || !changed_files.empty?
23
30
  end
24
31
 
32
+ sig { override.returns(String) }
25
33
  def to_patch
26
34
  run_shell_command("git diff --patch #{@initial_head_sha}.. .")
27
35
  end
28
36
 
37
+ sig { override.returns(NilClass) }
29
38
  def reset!
30
39
  reset(initial_head_sha)
31
40
  clean
@@ -35,6 +44,11 @@ module Dependabot
35
44
  nil
36
45
  end
37
46
 
47
+ sig do
48
+ override
49
+ .params(memo: T.nilable(String))
50
+ .returns(T.nilable(T::Array[Dependabot::Workspace::ChangeAttempt]))
51
+ end
38
52
  def store_change(memo = nil)
39
53
  return nil if changed_files.empty?
40
54
 
@@ -48,6 +62,11 @@ module Dependabot
48
62
 
49
63
  protected
50
64
 
65
+ sig do
66
+ override
67
+ .params(memo: T.nilable(String), error: T.nilable(StandardError))
68
+ .returns(T.nilable(T::Array[Dependabot::Workspace::ChangeAttempt]))
69
+ end
51
70
  def capture_failed_change_attempt(memo = nil, error = nil)
52
71
  return nil if changed_files(ignored_mode: "matching").empty? && error.nil?
53
72
 
@@ -57,19 +76,23 @@ module Dependabot
57
76
 
58
77
  private
59
78
 
79
+ sig { returns(String) }
60
80
  def configure_git
61
81
  run_shell_command(%(git config user.name "#{USER}"), allow_unsafe_shell_command: true)
62
82
  run_shell_command(%(git config user.email "#{EMAIL}"), allow_unsafe_shell_command: true)
63
83
  end
64
84
 
85
+ sig { returns(String) }
65
86
  def head_sha
66
87
  run_shell_command("git rev-parse HEAD").strip
67
88
  end
68
89
 
90
+ sig { returns(String) }
69
91
  def last_stash_sha
70
92
  run_shell_command("git rev-parse refs/stash").strip
71
93
  end
72
94
 
95
+ sig { returns(String) }
73
96
  def current_commit
74
97
  # Avoid emiting the user's commit message to logs if Dependabot hasn't made any changes
75
98
  return "Initial SHA: #{initial_head_sha}" if changes.empty?
@@ -78,10 +101,12 @@ module Dependabot
78
101
  run_shell_command(%(git log -1 --pretty="%h% B"), allow_unsafe_shell_command: true).strip
79
102
  end
80
103
 
104
+ sig { params(ignored_mode: String).returns(String) }
81
105
  def changed_files(ignored_mode: "traditional")
82
106
  run_shell_command("git status --untracked-files=all --ignored=#{ignored_mode} --short .").strip
83
107
  end
84
108
 
109
+ sig { params(memo: T.nilable(String)).returns([String, String]) }
85
110
  def stash(memo = nil)
86
111
  msg = memo || "workspace change attempt"
87
112
  run_shell_command("git add --all --force .")
@@ -93,6 +118,7 @@ module Dependabot
93
118
  [sha, diff]
94
119
  end
95
120
 
121
+ sig { params(memo: T.nilable(String)).returns([String, String]) }
96
122
  def commit(memo = nil)
97
123
  run_shell_command("git add #{path}")
98
124
  diff = run_shell_command("git diff --cached .")
@@ -103,18 +129,22 @@ module Dependabot
103
129
  [head_sha, diff]
104
130
  end
105
131
 
132
+ sig { params(sha: String).returns(String) }
106
133
  def reset(sha)
107
134
  run_shell_command("git reset --hard #{sha}")
108
135
  end
109
136
 
137
+ sig { override.returns(String) }
110
138
  def clean
111
139
  run_shell_command("git clean -fx .")
112
140
  end
113
141
 
142
+ sig { params(args: String, kwargs: T::Boolean).returns(String) }
114
143
  def run_shell_command(*args, **kwargs)
115
- Dir.chdir(path) { SharedHelpers.run_shell_command(*args, **kwargs) }
144
+ Dir.chdir(path) { T.unsafe(SharedHelpers).run_shell_command(*args, **kwargs) }
116
145
  end
117
146
 
147
+ sig { params(message: String).void }
118
148
  def debug(message)
119
149
  Dependabot.logger.debug("[workspace] #{message}")
120
150
  end
@@ -1,16 +1,28 @@
1
- # typed: true
1
+ # typed: strong
2
2
  # frozen_string_literal: true
3
3
 
4
+ require "sorbet-runtime"
4
5
  require "dependabot/workspace/git"
5
6
 
6
7
  module Dependabot
7
8
  module Workspace
8
- @active_workspace = nil
9
+ extend T::Sig
10
+
11
+ @active_workspace = T.let(nil, T.nilable(Dependabot::Workspace::Git))
9
12
 
10
13
  class << self
14
+ extend T::Sig
15
+
16
+ sig { returns(T.nilable(Dependabot::Workspace::Git)) }
11
17
  attr_accessor :active_workspace
12
18
  end
13
19
 
20
+ sig do
21
+ params(
22
+ repo_contents_path: String,
23
+ directory: T.any(Pathname, String)
24
+ ).void
25
+ end
14
26
  def self.setup(repo_contents_path:, directory:)
15
27
  Dependabot.logger.debug("Setting up workspace in #{repo_contents_path}")
16
28
 
@@ -22,6 +34,7 @@ module Dependabot
22
34
  @active_workspace = Dependabot::Workspace::Git.new(full_path)
23
35
  end
24
36
 
37
+ sig { params(memo: T.nilable(String)).returns(T.nilable(T::Array[Dependabot::Workspace::ChangeAttempt])) }
25
38
  def self.store_change(memo:)
26
39
  return unless @active_workspace
27
40
 
@@ -30,6 +43,7 @@ module Dependabot
30
43
  @active_workspace.store_change(memo)
31
44
  end
32
45
 
46
+ sig { void }
33
47
  def self.cleanup!
34
48
  return unless @active_workspace
35
49
 
data/lib/dependabot.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Dependabot
5
- VERSION = "0.236.0"
5
+ VERSION = "0.237.0"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.236.0
4
+ version: 0.237.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-26 00:00:00.000000000 Z
11
+ date: 2023-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-codecommit
@@ -101,7 +101,7 @@ dependencies:
101
101
  version: '0.96'
102
102
  - - "<"
103
103
  - !ruby/object:Gem::Version
104
- version: '0.103'
104
+ version: '0.105'
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
@@ -111,21 +111,21 @@ dependencies:
111
111
  version: '0.96'
112
112
  - - "<"
113
113
  - !ruby/object:Gem::Version
114
- version: '0.103'
114
+ version: '0.105'
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: faraday
117
117
  requirement: !ruby/object:Gem::Requirement
118
118
  requirements:
119
119
  - - '='
120
120
  - !ruby/object:Gem::Version
121
- version: 2.7.10
121
+ version: 2.7.11
122
122
  type: :runtime
123
123
  prerelease: false
124
124
  version_requirements: !ruby/object:Gem::Requirement
125
125
  requirements:
126
126
  - - '='
127
127
  - !ruby/object:Gem::Version
128
- version: 2.7.10
128
+ version: 2.7.11
129
129
  - !ruby/object:Gem::Dependency
130
130
  name: faraday-retry
131
131
  requirement: !ruby/object:Gem::Requirement
@@ -340,20 +340,34 @@ dependencies:
340
340
  - - "~>"
341
341
  - !ruby/object:Gem::Version
342
342
  version: '1.3'
343
+ - !ruby/object:Gem::Dependency
344
+ name: rspec-sorbet
345
+ requirement: !ruby/object:Gem::Requirement
346
+ requirements:
347
+ - - "~>"
348
+ - !ruby/object:Gem::Version
349
+ version: 1.9.2
350
+ type: :development
351
+ prerelease: false
352
+ version_requirements: !ruby/object:Gem::Requirement
353
+ requirements:
354
+ - - "~>"
355
+ - !ruby/object:Gem::Version
356
+ version: 1.9.2
343
357
  - !ruby/object:Gem::Dependency
344
358
  name: rubocop
345
359
  requirement: !ruby/object:Gem::Requirement
346
360
  requirements:
347
361
  - - "~>"
348
362
  - !ruby/object:Gem::Version
349
- version: 1.56.0
363
+ version: 1.57.2
350
364
  type: :development
351
365
  prerelease: false
352
366
  version_requirements: !ruby/object:Gem::Requirement
353
367
  requirements:
354
368
  - - "~>"
355
369
  - !ruby/object:Gem::Version
356
- version: 1.56.0
370
+ version: 1.57.2
357
371
  - !ruby/object:Gem::Dependency
358
372
  name: rubocop-performance
359
373
  requirement: !ruby/object:Gem::Requirement
@@ -528,7 +542,7 @@ licenses:
528
542
  - Nonstandard
529
543
  metadata:
530
544
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
531
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.236.0
545
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.237.0
532
546
  post_install_message:
533
547
  rdoc_options: []
534
548
  require_paths: