dependabot-github_actions 0.145.2 → 0.147.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: bc113c18f7e67041264e28282854419adb928cd11bad3ae3378619a3da775d4a
4
- data.tar.gz: 8bb56ec6644ad24643f83c32dfd0dbe7f2407ff098509d20a71604ddba9a7171
3
+ metadata.gz: 3d131c78837434680d6708662713baca159b3f92c97bf9739da130a0b8947da8
4
+ data.tar.gz: 91e153ba0b1ed6a6d57d1cf7f156f388998357a600cc29ceca135fc8b5532283
5
5
  SHA512:
6
- metadata.gz: cc87f2b17a5f671d8d13e064595d421a27b6ac7b0a113f42949c0573d083472f1edf64a1dde317bf1be410aecff80747d79718af6d50a0b84dc922bdbf87e8e8
7
- data.tar.gz: 767765ad6f776eaa92290e402f78c4ce95a3525bfe9adfe24e8d00e62cb9c6d2167691a523d9466a9c299548e427311d00d7308d26ccaed794e46dcca7f8959c
6
+ metadata.gz: 89a2af943fdee5119ed02bf5bfe128fff0a32e5255811a7ac7d1027e589dee8c5fb2a4116afc284fad6e0b7bc56583e1ff753507b8b985962cb83dbcc35be0db
7
+ data.tar.gz: 0ea1dc2ddb5b7c891ea4c72ff88b3a9de3ceae986c8e5a11c66afbb0e2cbd233b4f3954fc273a513d8bf40d73455c94e97e6bcbc079146bd6968c43787d014f0
@@ -30,6 +30,7 @@ module Dependabot
30
30
  dependency_set += workfile_file_dependencies(file)
31
31
  end
32
32
 
33
+ resolve_git_tags(dependency_set)
33
34
  dependency_set.dependencies
34
35
  end
35
36
 
@@ -56,16 +57,18 @@ module Dependabot
56
57
  name = "#{details.fetch('owner')}/#{details.fetch('repo')}"
57
58
  url = "https://github.com/#{name}"
58
59
 
60
+ ref = details.fetch("ref")
61
+ version = version_class.new(ref).to_s if version_class.correct?(ref)
59
62
  Dependency.new(
60
63
  name: name,
61
- version: nil,
64
+ version: version,
62
65
  requirements: [{
63
66
  requirement: nil,
64
67
  groups: [],
65
68
  source: {
66
69
  type: "git",
67
70
  url: url,
68
- ref: details.fetch("ref"),
71
+ ref: ref,
69
72
  branch: nil
70
73
  },
71
74
  file: file.name,
@@ -83,6 +86,25 @@ module Dependabot
83
86
  end
84
87
  end
85
88
 
89
+ def resolve_git_tags(dependency_set)
90
+ # Find deps that do not have an assigned (semver) version, but pin a commit that references a semver tag
91
+ resolved = dependency_set.dependencies.map do |dep|
92
+ next unless dep.version.nil?
93
+
94
+ git_checker = Dependabot::GitCommitChecker.new(dependency: dep, credentials: credentials)
95
+ next unless git_checker.pinned_ref_looks_like_commit_sha?
96
+
97
+ resolved = git_checker.local_tag_for_pinned_version
98
+ next if resolved.nil? || !version_class.correct?(resolved)
99
+
100
+ # Build a Dependency with the resolved version, and rely on DependencySet's merge
101
+ Dependency.new(name: dep.name, version: version_class.new(resolved).to_s,
102
+ package_manager: dep.package_manager, requirements: [])
103
+ end
104
+
105
+ resolved.compact.each { |dep| dependency_set << dep }
106
+ end
107
+
86
108
  def deep_fetch_uses_from_hash(json_object)
87
109
  steps = json_object.fetch("steps", [])
88
110
 
@@ -111,6 +133,10 @@ module Dependabot
111
133
 
112
134
  raise "No workflow files!"
113
135
  end
136
+
137
+ def version_class
138
+ GithubActions::Version
139
+ end
114
140
  end
115
141
  end
116
142
  end
@@ -62,12 +62,14 @@ module Dependabot
62
62
  return git_commit_checker.head_commit_for_current_branch unless git_commit_checker.pinned?
63
63
 
64
64
  # If the dependency is pinned to a tag that looks like a version then
65
- # we want to update that tag. The latest version will then be the SHA
66
- # of the latest tag that looks like a version.
65
+ # we want to update that tag.
67
66
  if git_commit_checker.pinned_ref_looks_like_version? &&
68
67
  git_commit_checker.local_tag_for_latest_version
69
68
  latest_tag = git_commit_checker.local_tag_for_latest_version
70
- return latest_tag.fetch(:commit_sha)
69
+ latest_version = latest_tag.fetch(:version)
70
+ return version_class.new(dependency.version) if shortened_semver_eq?(dependency.version, latest_version.to_s)
71
+
72
+ return latest_version
71
73
  end
72
74
 
73
75
  # If the dependency is pinned to a commit SHA and the latest
@@ -140,6 +142,16 @@ module Dependabot
140
142
  raise_on_ignored: raise_on_ignored
141
143
  )
142
144
  end
145
+
146
+ def shortened_semver_eq?(base, other)
147
+ return false unless base
148
+
149
+ base_split = base.split(".")
150
+ other_split = other.split(".")
151
+ return false unless base_split.length <= other_split.length
152
+
153
+ other_split[0..base_split.length - 1] == base_split
154
+ end
143
155
  end
144
156
  end
145
157
  end
@@ -5,6 +5,21 @@ require "dependabot/utils"
5
5
  module Dependabot
6
6
  module GithubActions
7
7
  class Version < Gem::Version
8
+ def initialize(version)
9
+ version = Version.remove_leading_v(version)
10
+ super
11
+ end
12
+
13
+ def self.remove_leading_v(version)
14
+ return version unless version.to_s.match?(/\Av([0-9])/)
15
+
16
+ version.to_s.gsub(/\Av/, "")
17
+ end
18
+
19
+ def self.correct?(version)
20
+ version = Version.remove_leading_v(version)
21
+ super
22
+ end
8
23
  end
9
24
  end
10
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-github_actions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.145.2
4
+ version: 0.147.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-05-07 00:00:00.000000000 Z
11
+ date: 2021-05-13 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.145.2
19
+ version: 0.147.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.145.2
26
+ version: 0.147.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: byebug
29
29
  requirement: !ruby/object:Gem::Requirement