dependabot-go_modules 0.168.0 → 0.169.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f4a5c38ca4522eaa039288aa779a30944ddb53db7a44c3d9b1151404df0ab15
4
- data.tar.gz: 36218dfa9f798ab87c48ba71f72130ff3fb108af88fb23f437c7ee1010aa48c5
3
+ metadata.gz: ba323197349529a5a515b8ccb3e41d22f7d7df32771e190fbcd0417b99a12f0a
4
+ data.tar.gz: 45f197511d6ef315061207e934af5debbff20126428eca5bb8d38c46e2f03c8f
5
5
  SHA512:
6
- metadata.gz: 1fea0f03bbacd8fb012a6bf31da93646da57e8f007738126e05979b451438d1ecf3bceeaf6b026f9e55b03d26dfb0972f687b779f172a9d2dfb85c31565620ea
7
- data.tar.gz: 3940cddcdb5019cf8627aa6e2e87b6f08ccd58e1614b32f3e579192d63655951fff0fc6fbbb32580ae37b477a31ff27af2537be8b5da509af9d216272c4cb245
6
+ metadata.gz: 6f23cc0ccd829b67591f41c159a9f2d94fdd2d6ebcf4d7376f8f31a4dc113f1a9bcc35b39a23a94a2aa41574566639c35b29e0e2ac6e2c94ce4acb4fadb0a3d2
7
+ data.tar.gz: c5e24ae86808fcba4a384b99a8aea43c18345091ffa1f6f1ccce41854ff8c71745fc78c3c995f5c18d1606972d3607b432c6522b1b847cea5e33aa33ccd3f93a
data/helpers/go.mod CHANGED
@@ -2,8 +2,4 @@ module github.com/dependabot/dependabot-core/go_modules/helpers
2
2
 
3
3
  go 1.16
4
4
 
5
- require (
6
- github.com/Masterminds/vcs v1.13.1
7
- github.com/dependabot/gomodules-extracted v1.4.2
8
- golang.org/x/mod v0.5.1
9
- )
5
+ require github.com/Masterminds/vcs v1.13.1
data/helpers/go.sum CHANGED
@@ -1,20 +1,2 @@
1
1
  github.com/Masterminds/vcs v1.13.1 h1:NL3G1X7/7xduQtA2sJLpVpfHTNBALVNSjob6KEjPXNQ=
2
2
  github.com/Masterminds/vcs v1.13.1/go.mod h1:N09YCmOQr6RLxC6UNHzuVwAdodYbbnycGHSmwVJjcKA=
3
- github.com/dependabot/gomodules-extracted v1.4.2 h1:3IxvHARuuSojSNUHguc6kzWgs+uQN3fdRCowJMU1kDE=
4
- github.com/dependabot/gomodules-extracted v1.4.2/go.mod h1:cpzrmDX1COyhSDQXHfkRMw0STb0vmguBFqmrkr51h1I=
5
- golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
6
- golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8=
7
- golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
8
- golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38=
9
- golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
10
- golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
11
- golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
12
- golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
13
- golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
14
- golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
15
- golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
16
- golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e h1:aZzprAO9/8oim3qStq3wc1Xuxx4QmAGriC4VU4ojemQ=
17
- golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
18
- golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
19
- golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 h1:/atklqdjdhuosWIl6AIbOeHJjicWYPqR9bpxqxYG2pA=
20
- golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
data/helpers/main.go CHANGED
@@ -7,7 +7,6 @@ import (
7
7
  "os"
8
8
 
9
9
  "github.com/dependabot/dependabot-core/go_modules/helpers/importresolver"
10
- "github.com/dependabot/dependabot-core/go_modules/helpers/updatechecker"
11
10
  )
12
11
 
13
12
  type HelperParams struct {
@@ -32,10 +31,6 @@ func main() {
32
31
  funcErr error
33
32
  )
34
33
  switch helperParams.Function {
35
- case "getVersions":
36
- var args updatechecker.Args
37
- parseArgs(helperParams.Args, &args)
38
- funcOut, funcErr = updatechecker.GetVersions(&args)
39
34
  case "getVcsRemoteForImport":
40
35
  var args importresolver.Args
41
36
  parseArgs(helperParams.Args, &args)
@@ -20,9 +20,11 @@ module Dependabot
20
20
  /404 Not Found/,
21
21
  /Repository not found/,
22
22
  /unrecognized import path/,
23
+ /malformed module path/,
23
24
  # (Private) module could not be fetched
24
25
  /module .*: git ls-remote .*: exit status 128/m.freeze
25
26
  ].freeze
27
+ INVALID_VERSION_REGEX = /version "[^"]+" invalid/m.freeze
26
28
  PSEUDO_VERSION_REGEX = /\b\d{14}-[0-9a-f]{12}$/.freeze
27
29
 
28
30
  def initialize(dependency:, dependency_files:, credentials:,
@@ -73,23 +75,22 @@ module Dependabot
73
75
  def available_versions
74
76
  SharedHelpers.in_a_temporary_directory do
75
77
  SharedHelpers.with_git_configured(credentials: credentials) do
76
- File.write("go.mod", go_mod.content)
78
+ manifest = parse_manifest
79
+
80
+ # Set up an empty go.mod so 'go list -m' won't attempt to download dependencies. This
81
+ # appears to be a side effect of operating with GOPRIVATE=*. We'll retain any exclude
82
+ # directives to omit those versions.
83
+ File.write("go.mod", "module dummy\n")
84
+ manifest["Exclude"]&.each do |r|
85
+ SharedHelpers.run_shell_command("go mod edit -exclude=#{r['Path']}@#{r['Version']}")
86
+ end
77
87
 
78
88
  # Turn off the module proxy for now, as it's causing issues with
79
89
  # private git dependencies
80
90
  env = { "GOPRIVATE" => "*" }
81
91
 
82
- version_strings = SharedHelpers.run_helper_subprocess(
83
- command: NativeHelpers.helper_path,
84
- env: env,
85
- function: "getVersions",
86
- args: {
87
- dependency: {
88
- name: dependency.name,
89
- version: "v" + dependency.version
90
- }
91
- }
92
- )
92
+ versions_json = SharedHelpers.run_shell_command("go list -m -versions -json #{dependency.name}", env: env)
93
+ version_strings = JSON.parse(versions_json)["Versions"]
93
94
 
94
95
  return [version_class.new(dependency.version)] if version_strings.nil?
95
96
 
@@ -108,6 +109,8 @@ module Dependabot
108
109
  def handle_subprocess_error(error)
109
110
  if RESOLVABILITY_ERROR_REGEXES.any? { |rgx| error.message =~ rgx }
110
111
  ResolvabilityErrors.handle(error.message, credentials: credentials)
112
+ elsif INVALID_VERSION_REGEX =~ error.message
113
+ raise Dependabot::DependencyFileNotResolvable, error.message
111
114
  end
112
115
 
113
116
  raise
@@ -123,6 +126,15 @@ module Dependabot
123
126
  @go_mod ||= dependency_files.find { |f| f.name == "go.mod" }
124
127
  end
125
128
 
129
+ def parse_manifest
130
+ SharedHelpers.in_a_temporary_directory do
131
+ File.write("go.mod", go_mod.content)
132
+ json = SharedHelpers.run_shell_command("go mod edit -json")
133
+
134
+ JSON.parse(json) || {}
135
+ end
136
+ end
137
+
126
138
  def filter_prerelease_versions(versions_array)
127
139
  return versions_array if wants_prerelease?
128
140
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-go_modules
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.168.0
4
+ version: 0.169.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.168.0
19
+ version: 0.169.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.168.0
26
+ version: 0.169.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: byebug
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -191,7 +191,6 @@ files:
191
191
  - helpers/go.sum
192
192
  - helpers/importresolver/main.go
193
193
  - helpers/main.go
194
- - helpers/updatechecker/main.go
195
194
  - lib/dependabot/go_modules.rb
196
195
  - lib/dependabot/go_modules/file_fetcher.rb
197
196
  - lib/dependabot/go_modules/file_parser.rb
@@ -1,93 +0,0 @@
1
- package updatechecker
2
-
3
- import (
4
- "context"
5
- "errors"
6
- "io/ioutil"
7
-
8
- "github.com/dependabot/gomodules-extracted/cmd/go/_internal_/modfetch"
9
- "github.com/dependabot/gomodules-extracted/cmd/go/_internal_/modload"
10
- "golang.org/x/mod/modfile"
11
- "golang.org/x/mod/semver"
12
- )
13
-
14
- type Dependency struct {
15
- Name string `json:"name"`
16
- Version string `json:"version"`
17
- }
18
-
19
- type Args struct {
20
- Dependency *Dependency `json:"dependency"`
21
- }
22
-
23
- // GetVersions returns a list of versions for the given dependency that
24
- // are within the same major version.
25
- func GetVersions(args *Args) (interface{}, error) {
26
- if args.Dependency == nil {
27
- return nil, errors.New("Expected args.dependency to not be nil")
28
- }
29
-
30
- currentVersion := args.Dependency.Version
31
-
32
- modload.DisallowWriteGoMod()
33
- _ = modload.LoadModFile(context.Background())
34
-
35
- repo := modfetch.Lookup("direct", args.Dependency.Name)
36
- versions, err := repo.Versions("")
37
- if err != nil {
38
- return nil, err
39
- }
40
-
41
- excludes, err := goModExcludes(args.Dependency.Name)
42
- if err != nil {
43
- return nil, err
44
- }
45
-
46
- currentMajor := semver.Major(currentVersion)
47
-
48
- var candidateVersions []string
49
-
50
- Outer:
51
- for _, v := range versions {
52
- if semver.Major(v) != currentMajor {
53
- continue
54
- }
55
-
56
- for _, exclude := range excludes {
57
- if v == exclude {
58
- continue Outer
59
- }
60
- }
61
-
62
- candidateVersions = append(candidateVersions, v)
63
- }
64
-
65
- return candidateVersions, nil
66
- }
67
-
68
- func goModExcludes(dependency string) ([]string, error) {
69
- data, err := ioutil.ReadFile("go.mod")
70
- if err != nil {
71
- return nil, err
72
- }
73
-
74
- var f *modfile.File
75
- // TODO library detection - don't consider exclude etc for libraries
76
- if "library" == "true" {
77
- f, err = modfile.ParseLax("go.mod", data, nil)
78
- } else {
79
- f, err = modfile.Parse("go.mod", data, nil)
80
- }
81
- if err != nil {
82
- return nil, err
83
- }
84
-
85
- var excludes []string
86
- for _, e := range f.Exclude {
87
- if e.Mod.Path == dependency {
88
- excludes = append(excludes, e.Mod.Version)
89
- }
90
- }
91
-
92
- return excludes, nil
93
- }