dependabot-github_actions 0.145.3 → 0.147.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: 245032b557b82c365b9cf052d0a0902ec041a397918a7be2788efa1829325ab3
4
- data.tar.gz: 9a82499f8844fe3023880fcd04e37b8ef996c07859261fa3b9c64c657a3a7c7f
3
+ metadata.gz: c15f17d1ced60fd9c8532a2ed8d46318210c2620aa94a0da84f6fd717f057312
4
+ data.tar.gz: a8657d08847060db89c735b978f927ee1195c95dcb719662f1d69cb8cafde25b
5
5
  SHA512:
6
- metadata.gz: c3e2dbc136449f1fcbfc38e224059e832e78c2c544e38a372572a7a4b4957c803e3be104081cc69cdb99b4b78dafbc546cbe03b34466a11ae6c2ad1cb99baf10
7
- data.tar.gz: 9ea2bd99219e4eda31c0fc3cf5d4824b493729cb99bf897b397b9053ce259c26937db266cab2601f8ed22a9f52341358c81b481d0e370d55f14eef06338226bf
6
+ metadata.gz: f4cbc718e9e060bc5cc07f6659db3a211ef7c99cf0bf244040b00277d4fc4ecee1fb61b47f7bae72c32d115b5ce8f23b42d6580b8b5e02c8807dd9709547b76a
7
+ data.tar.gz: 9f659f35eef032b6242807bd86a704df0133d8bb7eae6854a990a32710c14b97b5c71243f1baf54498ae5679504d9bc59d8e9bf0f6f90e8bbfae43a616e4fb89
@@ -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.3
4
+ version: 0.147.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-07 00:00:00.000000000 Z
11
+ date: 2021-05-19 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.3
19
+ version: 0.147.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.3
26
+ version: 0.147.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.14.0
103
+ version: 1.15.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.14.0
110
+ version: 1.15.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: simplecov
113
113
  requirement: !ruby/object:Gem::Requirement