dependabot-github_actions 0.145.1 → 0.146.1

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: 281c9c5e2f5db5f8329431348cd5fb705cd35718ea09f087c4f020f5ba49f2e7
4
- data.tar.gz: feafd76ecf09b06a0ef7069a0150a031d14cad97c4ea929c02ea7f61257bef55
3
+ metadata.gz: f18094461826b65eab69b655ca90e8cc7e143d3d2ac9cf15f2256bf0a6d47a29
4
+ data.tar.gz: 6bad99dfc7ffcb8a06eace7894fda46a7ceb4ab94980e2a8b656f5a281bcd324
5
5
  SHA512:
6
- metadata.gz: 1387de72e92b4ead8a65f8540b2bf0327897f100e27e3b5ca0c8243df6fb0314c0d3598a631c4cbae481b0ddfaf2256b4440f63609b037109c40d487d44af031
7
- data.tar.gz: 9f5e0ad0a6a0556b73b349c016d008cd349a8864530c30658ca9f23ea8900bea2149ac4b573dbaf31cf4b28831fdedb906f6d5e0dd3eb40007f23778e091ac9b
6
+ metadata.gz: f1d187ecbeafaa181f64b90d2371c6f16fe308910bb129a708087021b3cf9ba58ea9f4622608421a3ea163e16d5ef8ce56b8edef913512d936240380d9cd28bf
7
+ data.tar.gz: 1f6a313a85b15056d563f0edfb08aedf6bcc9c507dccf2ebdd9bf18aba64c279983f3bd7121e7f86941cb53a7de0dc6b8ef11534da2630eb128fb059cbb8314a
@@ -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.1
4
+ version: 0.146.1
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-06 00:00:00.000000000 Z
11
+ date: 2021-05-12 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.1
19
+ version: 0.146.1
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.1
26
+ version: 0.146.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: byebug
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 1.13.0
103
+ version: 1.14.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 1.13.0
110
+ version: 1.14.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: simplecov
113
113
  requirement: !ruby/object:Gem::Requirement