dependabot-elm 0.143.3 → 0.145.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dependabot/elm/file_fetcher.rb +1 -8
- data/lib/dependabot/elm/file_parser.rb +2 -34
- data/lib/dependabot/elm/file_updater.rb +2 -25
- data/lib/dependabot/elm/update_checker.rb +5 -8
- data/lib/dependabot/elm/update_checker/elm_19_version_resolver.rb +1 -1
- metadata +4 -6
- data/lib/dependabot/elm/file_updater/elm_package_updater.rb +0 -67
- data/lib/dependabot/elm/update_checker/elm_18_version_resolver.rb +0 -238
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f5291d7f3e150be15567b006b56cff5b2689f6419195ab9bc8395738b99adb6
|
4
|
+
data.tar.gz: d08135ff65a93450c28669ef0f6c2eb6a5e14ba3174fee46135560ce8f1e5e2e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49b7d18618cd736d83e7ff697772bd7fdfa5877e38487b8d858e29041683e3cbc386eb97aec1f8a5958b56b1724be326701ba5a6d5d88bbf124e80cdd54ca118
|
7
|
+
data.tar.gz: a29ab3cd9e167ce6990968cb93b671547231167fdab0653947d622c2a407da93fc09718f613f8391a5932d57dee0ceb718d8088240482401cd8e16e8bb4474de
|
@@ -7,8 +7,6 @@ module Dependabot
|
|
7
7
|
module Elm
|
8
8
|
class FileFetcher < Dependabot::FileFetchers::Base
|
9
9
|
def self.required_files_in?(filenames)
|
10
|
-
return true if filenames.include?("elm-package.json")
|
11
|
-
|
12
10
|
filenames.include?("elm.json")
|
13
11
|
end
|
14
12
|
|
@@ -21,7 +19,6 @@ module Dependabot
|
|
21
19
|
def fetch_files
|
22
20
|
fetched_files = []
|
23
21
|
|
24
|
-
fetched_files << elm_package if elm_package
|
25
22
|
fetched_files << elm_json if elm_json
|
26
23
|
|
27
24
|
# NOTE: We *do not* fetch the exact-dependencies.json file, as it is
|
@@ -32,17 +29,13 @@ module Dependabot
|
|
32
29
|
end
|
33
30
|
|
34
31
|
def check_required_files_present
|
35
|
-
return if
|
32
|
+
return if elm_json
|
36
33
|
|
37
34
|
path = Pathname.new(File.join(directory, "elm.json")).
|
38
35
|
cleanpath.to_path
|
39
36
|
raise Dependabot::DependencyFileNotFound, path
|
40
37
|
end
|
41
38
|
|
42
|
-
def elm_package
|
43
|
-
@elm_package ||= fetch_file_if_present("elm-package.json")
|
44
|
-
end
|
45
|
-
|
46
39
|
def elm_json
|
47
40
|
@elm_json ||= fetch_file_if_present("elm.json")
|
48
41
|
end
|
@@ -16,7 +16,6 @@ module Dependabot
|
|
16
16
|
def parse
|
17
17
|
dependency_set = DependencySet.new
|
18
18
|
|
19
|
-
dependency_set += elm_package_dependencies if elm_package
|
20
19
|
dependency_set += elm_json_dependencies if elm_json
|
21
20
|
|
22
21
|
dependency_set.dependencies.sort_by(&:name)
|
@@ -24,27 +23,6 @@ module Dependabot
|
|
24
23
|
|
25
24
|
private
|
26
25
|
|
27
|
-
def elm_package_dependencies
|
28
|
-
dependency_set = DependencySet.new
|
29
|
-
|
30
|
-
parsed_package_file.fetch("dependencies").each do |name, req|
|
31
|
-
dependency_set <<
|
32
|
-
Dependency.new(
|
33
|
-
name: name,
|
34
|
-
version: version_for(req)&.to_s,
|
35
|
-
requirements: [{
|
36
|
-
requirement: req, # 4.0 <= v <= 4.0
|
37
|
-
groups: [], # we don't have this (its dev vs non-dev)
|
38
|
-
source: nil, # elm-package only has elm-package sources
|
39
|
-
file: "elm-package.json"
|
40
|
-
}],
|
41
|
-
package_manager: "elm"
|
42
|
-
)
|
43
|
-
end
|
44
|
-
|
45
|
-
dependency_set
|
46
|
-
end
|
47
|
-
|
48
26
|
# For docs on elm.json, see:
|
49
27
|
# https://github.com/elm/compiler/blob/master/docs/elm.json/application.md
|
50
28
|
# https://github.com/elm/compiler/blob/master/docs/elm.json/package.md
|
@@ -98,9 +76,9 @@ module Dependabot
|
|
98
76
|
end
|
99
77
|
|
100
78
|
def check_required_files
|
101
|
-
return if elm_json
|
79
|
+
return if elm_json
|
102
80
|
|
103
|
-
raise "No elm.json
|
81
|
+
raise "No elm.json"
|
104
82
|
end
|
105
83
|
|
106
84
|
def version_for(version_requirement)
|
@@ -111,22 +89,12 @@ module Dependabot
|
|
111
89
|
req.requirements.first.last
|
112
90
|
end
|
113
91
|
|
114
|
-
def parsed_package_file
|
115
|
-
@parsed_package_file ||= JSON.parse(elm_package.content)
|
116
|
-
rescue JSON::ParserError
|
117
|
-
raise Dependabot::DependencyFileNotParseable, elm_package.path
|
118
|
-
end
|
119
|
-
|
120
92
|
def parsed_elm_json
|
121
93
|
@parsed_elm_json ||= JSON.parse(elm_json.content)
|
122
94
|
rescue JSON::ParserError
|
123
95
|
raise Dependabot::DependencyFileNotParseable, elm_json.path
|
124
96
|
end
|
125
97
|
|
126
|
-
def elm_package
|
127
|
-
@elm_package ||= get_original_file("elm-package.json")
|
128
|
-
end
|
129
|
-
|
130
98
|
def elm_json
|
131
99
|
@elm_json ||= get_original_file("elm.json")
|
132
100
|
end
|
@@ -6,12 +6,10 @@ require "dependabot/file_updaters/base"
|
|
6
6
|
module Dependabot
|
7
7
|
module Elm
|
8
8
|
class FileUpdater < Dependabot::FileUpdaters::Base
|
9
|
-
require_relative "file_updater/elm_package_updater"
|
10
9
|
require_relative "file_updater/elm_json_updater"
|
11
10
|
|
12
11
|
def self.updated_files_regex
|
13
12
|
[
|
14
|
-
/^elm-package\.json$/,
|
15
13
|
/^elm\.json$/
|
16
14
|
]
|
17
15
|
end
|
@@ -19,16 +17,6 @@ module Dependabot
|
|
19
17
|
def updated_dependency_files
|
20
18
|
updated_files = []
|
21
19
|
|
22
|
-
elm_package_files.each do |file|
|
23
|
-
next unless file_changed?(file)
|
24
|
-
|
25
|
-
updated_files <<
|
26
|
-
updated_file(
|
27
|
-
file: file,
|
28
|
-
content: updated_elm_package_content(file)
|
29
|
-
)
|
30
|
-
end
|
31
|
-
|
32
20
|
elm_json_files.each do |file|
|
33
21
|
next unless file_changed?(file)
|
34
22
|
|
@@ -47,16 +35,9 @@ module Dependabot
|
|
47
35
|
private
|
48
36
|
|
49
37
|
def check_required_files
|
50
|
-
return if elm_json_files.any?
|
51
|
-
|
52
|
-
raise "No elm.json or elm-package.json!"
|
53
|
-
end
|
38
|
+
return if elm_json_files.any?
|
54
39
|
|
55
|
-
|
56
|
-
ElmPackageUpdater.new(
|
57
|
-
dependencies: dependencies,
|
58
|
-
elm_package_file: file
|
59
|
-
).updated_elm_package_file_content
|
40
|
+
raise "No elm.json"
|
60
41
|
end
|
61
42
|
|
62
43
|
def updated_elm_json_content(file)
|
@@ -66,10 +47,6 @@ module Dependabot
|
|
66
47
|
).updated_content
|
67
48
|
end
|
68
49
|
|
69
|
-
def elm_package_files
|
70
|
-
dependency_files.select { |f| f.name.end_with?("elm-package.json") }
|
71
|
-
end
|
72
|
-
|
73
50
|
def elm_json_files
|
74
51
|
dependency_files.select { |f| f.name.end_with?("elm.json") }
|
75
52
|
end
|
@@ -10,7 +10,6 @@ module Dependabot
|
|
10
10
|
module Elm
|
11
11
|
class UpdateChecker < Dependabot::UpdateCheckers::Base
|
12
12
|
require_relative "update_checker/requirements_updater"
|
13
|
-
require_relative "update_checker/elm_18_version_resolver"
|
14
13
|
require_relative "update_checker/elm_19_version_resolver"
|
15
14
|
|
16
15
|
def latest_version
|
@@ -55,17 +54,15 @@ module Dependabot
|
|
55
54
|
|
56
55
|
def version_resolver
|
57
56
|
@version_resolver ||=
|
58
|
-
|
57
|
+
begin
|
58
|
+
unless dependency.requirements.any? { |r| r.fetch(:file) == "elm.json" }
|
59
|
+
raise Dependabot::DependencyFileNotResolvable, "No elm.json found"
|
60
|
+
end
|
61
|
+
|
59
62
|
Elm19VersionResolver.new(
|
60
63
|
dependency: dependency,
|
61
64
|
dependency_files: dependency_files
|
62
65
|
)
|
63
|
-
else
|
64
|
-
Elm18VersionResolver.new(
|
65
|
-
dependency: dependency,
|
66
|
-
dependency_files: dependency_files,
|
67
|
-
candidate_versions: candidate_versions
|
68
|
-
)
|
69
66
|
end
|
70
67
|
end
|
71
68
|
|
@@ -29,7 +29,7 @@ module Dependabot
|
|
29
29
|
return current_version if unlock_requirement == :none
|
30
30
|
|
31
31
|
# Otherwise, we gotta check a few conditions to see if bumping
|
32
|
-
# wouldn't also bump other deps in elm
|
32
|
+
# wouldn't also bump other deps in elm.json
|
33
33
|
fetch_latest_resolvable_version(unlock_requirement)
|
34
34
|
end
|
35
35
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dependabot-elm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.145.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-
|
11
|
+
date: 2021-05-05 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.
|
19
|
+
version: 0.145.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.
|
26
|
+
version: 0.145.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: byebug
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -190,12 +190,10 @@ files:
|
|
190
190
|
- lib/dependabot/elm/file_parser.rb
|
191
191
|
- lib/dependabot/elm/file_updater.rb
|
192
192
|
- lib/dependabot/elm/file_updater/elm_json_updater.rb
|
193
|
-
- lib/dependabot/elm/file_updater/elm_package_updater.rb
|
194
193
|
- lib/dependabot/elm/metadata_finder.rb
|
195
194
|
- lib/dependabot/elm/requirement.rb
|
196
195
|
- lib/dependabot/elm/update_checker.rb
|
197
196
|
- lib/dependabot/elm/update_checker/cli_parser.rb
|
198
|
-
- lib/dependabot/elm/update_checker/elm_18_version_resolver.rb
|
199
197
|
- lib/dependabot/elm/update_checker/elm_19_version_resolver.rb
|
200
198
|
- lib/dependabot/elm/update_checker/requirements_updater.rb
|
201
199
|
- lib/dependabot/elm/version.rb
|
@@ -1,67 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "dependabot/elm/file_updater"
|
4
|
-
|
5
|
-
module Dependabot
|
6
|
-
module Elm
|
7
|
-
class FileUpdater
|
8
|
-
class ElmPackageUpdater
|
9
|
-
def initialize(elm_package_file:, dependencies:)
|
10
|
-
@elm_package_file = elm_package_file
|
11
|
-
@dependencies = dependencies
|
12
|
-
end
|
13
|
-
|
14
|
-
def updated_elm_package_file_content
|
15
|
-
dependencies.
|
16
|
-
select { |dep| requirement_changed?(elm_package_file, dep) }.
|
17
|
-
reduce(elm_package_file.content.dup) do |content, dep|
|
18
|
-
updated_content = content
|
19
|
-
|
20
|
-
updated_content = update_requirement(
|
21
|
-
content: updated_content,
|
22
|
-
filename: elm_package_file.name,
|
23
|
-
dependency: dep
|
24
|
-
)
|
25
|
-
|
26
|
-
next updated_content unless content == updated_content
|
27
|
-
|
28
|
-
raise "Expected content to change!"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
attr_reader :elm_package_file, :dependencies
|
35
|
-
|
36
|
-
def requirement_changed?(file, dependency)
|
37
|
-
changed_requirements =
|
38
|
-
dependency.requirements - dependency.previous_requirements
|
39
|
-
|
40
|
-
changed_requirements.any? { |f| f[:file] == file.name }
|
41
|
-
end
|
42
|
-
|
43
|
-
def update_requirement(content:, filename:, dependency:)
|
44
|
-
updated_req =
|
45
|
-
dependency.requirements.
|
46
|
-
find { |r| r.fetch(:file) == filename }.
|
47
|
-
fetch(:requirement)
|
48
|
-
|
49
|
-
old_req =
|
50
|
-
dependency.previous_requirements.
|
51
|
-
find { |r| r.fetch(:file) == filename }.
|
52
|
-
fetch(:requirement)
|
53
|
-
|
54
|
-
return content unless old_req
|
55
|
-
|
56
|
-
dep = dependency
|
57
|
-
regex =
|
58
|
-
/"#{Regexp.quote(dep.name)}"\s*:\s+"#{Regexp.quote(old_req)}"/
|
59
|
-
|
60
|
-
content.gsub(regex) do |declaration|
|
61
|
-
declaration.gsub(%("#{old_req}"), %("#{updated_req}"))
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
@@ -1,238 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "open3"
|
4
|
-
require "dependabot/shared_helpers"
|
5
|
-
require "dependabot/errors"
|
6
|
-
require "dependabot/elm/file_parser"
|
7
|
-
require "dependabot/elm/update_checker"
|
8
|
-
require "dependabot/elm/update_checker/cli_parser"
|
9
|
-
require "dependabot/elm/update_checker/requirements_updater"
|
10
|
-
require "dependabot/elm/requirement"
|
11
|
-
|
12
|
-
module Dependabot
|
13
|
-
module Elm
|
14
|
-
class UpdateChecker
|
15
|
-
class Elm18VersionResolver
|
16
|
-
class UnrecoverableState < StandardError; end
|
17
|
-
|
18
|
-
def initialize(dependency:, dependency_files:, candidate_versions:)
|
19
|
-
@dependency = dependency
|
20
|
-
@dependency_files = dependency_files
|
21
|
-
@candidate_versions = candidate_versions
|
22
|
-
end
|
23
|
-
|
24
|
-
def latest_resolvable_version(unlock_requirement:)
|
25
|
-
raise "Invalid unlock setting: #{unlock_requirement}" unless %i(none own all).include?(unlock_requirement)
|
26
|
-
|
27
|
-
# Elm has no lockfile, so we will never create an update PR if
|
28
|
-
# unlock requirements are `none`. Just return the current version.
|
29
|
-
return current_version if unlock_requirement == :none
|
30
|
-
|
31
|
-
# Otherwise, we gotta check a few conditions to see if bumping
|
32
|
-
# wouldn't also bump other deps in elm-package.json
|
33
|
-
candidate_versions.sort.reverse_each do |version|
|
34
|
-
return version if can_update?(version, unlock_requirement)
|
35
|
-
end
|
36
|
-
|
37
|
-
# Fall back to returning the dependency's current version, which is
|
38
|
-
# presumed to be resolvable
|
39
|
-
current_version
|
40
|
-
end
|
41
|
-
|
42
|
-
def updated_dependencies_after_full_unlock
|
43
|
-
version = latest_resolvable_version(unlock_requirement: :all)
|
44
|
-
deps_after_install = fetch_install_metadata(target_version: version)
|
45
|
-
|
46
|
-
original_dependency_details.map do |original_dep|
|
47
|
-
new_version = deps_after_install.fetch(original_dep.name)
|
48
|
-
|
49
|
-
old_reqs = original_dep.requirements.map do |req|
|
50
|
-
requirement_class.new(req[:requirement])
|
51
|
-
end
|
52
|
-
|
53
|
-
next if old_reqs.all? { |req| req.satisfied_by?(new_version) }
|
54
|
-
|
55
|
-
new_requirements =
|
56
|
-
RequirementsUpdater.new(
|
57
|
-
requirements: original_dep.requirements,
|
58
|
-
latest_resolvable_version: new_version.to_s
|
59
|
-
).updated_requirements
|
60
|
-
|
61
|
-
Dependency.new(
|
62
|
-
name: original_dep.name,
|
63
|
-
version: new_version.to_s,
|
64
|
-
requirements: new_requirements,
|
65
|
-
previous_version: original_dep.version,
|
66
|
-
previous_requirements: original_dep.requirements,
|
67
|
-
package_manager: original_dep.package_manager
|
68
|
-
)
|
69
|
-
end.compact
|
70
|
-
end
|
71
|
-
|
72
|
-
private
|
73
|
-
|
74
|
-
attr_reader :dependency, :dependency_files, :candidate_versions
|
75
|
-
|
76
|
-
def can_update?(version, unlock_requirement)
|
77
|
-
deps_after_install = fetch_install_metadata(target_version: version)
|
78
|
-
|
79
|
-
result = check_install_result(deps_after_install, version)
|
80
|
-
|
81
|
-
# If the install was clean then we can definitely update
|
82
|
-
return true if result == :clean_bump
|
83
|
-
|
84
|
-
# Otherwise, we can still update if the result was a forced full
|
85
|
-
# unlock and we're allowed to unlock other requirements
|
86
|
-
return false unless unlock_requirement == :all
|
87
|
-
|
88
|
-
result == :forced_full_unlock_bump
|
89
|
-
end
|
90
|
-
|
91
|
-
def check_install_result(deps_after_install, target_version)
|
92
|
-
# This can go one of 5 ways:
|
93
|
-
# 1) We bump our dep and no other dep is bumped
|
94
|
-
# 2) We bump our dep and another dep is bumped too
|
95
|
-
# Scenario: NoRedInk/datetimepicker bump to 3.0.2 also
|
96
|
-
# bumps elm-css to 14
|
97
|
-
# 3) We bump our dep but actually elm-package doesn't bump it
|
98
|
-
# Scenario: elm-css bump to 14 but datetimepicker is at 3.0.1
|
99
|
-
# 4) We bump our dep but elm-package just says
|
100
|
-
# "Packages configured successfully!"
|
101
|
-
# Narrator: they weren't
|
102
|
-
# Scenario: impossible dependency (i.e. elm-css 999.999.999)
|
103
|
-
# a <= v < b where a is greater than latest version
|
104
|
-
# 5) We bump our dep but elm-package blows up (not handled here)
|
105
|
-
# Scenario: rtfeldman/elm-css 14 && rtfeldman/hashed-class 1.0.0
|
106
|
-
# I'm not sure what's different from this scenario
|
107
|
-
# to 3), why it blows up instead of just rolling
|
108
|
-
# elm-css back to version 9 which is what
|
109
|
-
# hashed-class requires
|
110
|
-
|
111
|
-
# 4) We bump our dep but elm-package just says
|
112
|
-
# "Packages configured successfully!"
|
113
|
-
return :empty_elm_stuff_bug if deps_after_install.empty?
|
114
|
-
|
115
|
-
version_after_install = deps_after_install.fetch(dependency.name)
|
116
|
-
|
117
|
-
# 3) We bump our dep but actually elm-package doesn't bump it
|
118
|
-
return :downgrade_bug if version_after_install < target_version
|
119
|
-
|
120
|
-
other_top_level_deps_bumped =
|
121
|
-
original_dependency_details.
|
122
|
-
reject { |dep| dep.name == dependency.name }.
|
123
|
-
select do |dep|
|
124
|
-
reqs = dep.requirements.map { |r| r.fetch(:requirement) }
|
125
|
-
reqs = reqs.map { |r| requirement_class.new(r) }
|
126
|
-
reqs.any? { |r| !r.satisfied_by?(deps_after_install[dep.name]) }
|
127
|
-
end
|
128
|
-
|
129
|
-
# 2) We bump our dep and another dep is bumped
|
130
|
-
return :forced_full_unlock_bump if other_top_level_deps_bumped.any?
|
131
|
-
|
132
|
-
# 1) We bump our dep and no other dep is bumped
|
133
|
-
:clean_bump
|
134
|
-
end
|
135
|
-
|
136
|
-
def fetch_install_metadata(target_version:)
|
137
|
-
@install_cache ||= {}
|
138
|
-
@install_cache[target_version.to_s] ||=
|
139
|
-
SharedHelpers.in_a_temporary_directory do
|
140
|
-
write_temporary_dependency_files(target_version: target_version)
|
141
|
-
|
142
|
-
# Elm package install outputs a preview of the actions to be
|
143
|
-
# performed. We can use this preview to calculate whether it
|
144
|
-
# would do anything funny
|
145
|
-
command = "yes n | elm-package install"
|
146
|
-
response = run_shell_command(command)
|
147
|
-
|
148
|
-
deps_after_install = CliParser.decode_install_preview(response)
|
149
|
-
|
150
|
-
deps_after_install
|
151
|
-
rescue SharedHelpers::HelperSubprocessFailed => e
|
152
|
-
# 5) We bump our dep but elm-package blows up
|
153
|
-
handle_elm_package_errors(e)
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
def run_shell_command(command)
|
158
|
-
start = Time.now
|
159
|
-
stdout, process = Open3.capture2e(command)
|
160
|
-
time_taken = Time.now - start
|
161
|
-
|
162
|
-
# Raise an error with the output from the shell session if Elm
|
163
|
-
# returns a non-zero status
|
164
|
-
return stdout if process.success?
|
165
|
-
|
166
|
-
raise SharedHelpers::HelperSubprocessFailed.new(
|
167
|
-
message: stdout,
|
168
|
-
error_context: {
|
169
|
-
command: command,
|
170
|
-
time_taken: time_taken,
|
171
|
-
process_exit_value: process.to_s
|
172
|
-
}
|
173
|
-
)
|
174
|
-
end
|
175
|
-
|
176
|
-
def handle_elm_package_errors(error)
|
177
|
-
if error.message.include?("I cannot find a set of packages that " \
|
178
|
-
"works with your constraints")
|
179
|
-
raise Dependabot::DependencyFileNotResolvable, error.message
|
180
|
-
end
|
181
|
-
|
182
|
-
if error.message.include?("You are using Elm 0.18.0, but")
|
183
|
-
raise Dependabot::DependencyFileNotResolvable, error.message
|
184
|
-
end
|
185
|
-
|
186
|
-
# I don't know any other errors
|
187
|
-
raise error
|
188
|
-
end
|
189
|
-
|
190
|
-
def write_temporary_dependency_files(target_version:)
|
191
|
-
dependency_files.each do |file|
|
192
|
-
path = file.name
|
193
|
-
FileUtils.mkdir_p(Pathname.new(path).dirname)
|
194
|
-
|
195
|
-
File.write(
|
196
|
-
path,
|
197
|
-
updated_elm_package_content(file.content, target_version)
|
198
|
-
)
|
199
|
-
end
|
200
|
-
end
|
201
|
-
|
202
|
-
def updated_elm_package_content(content, version)
|
203
|
-
json = JSON.parse(content)
|
204
|
-
|
205
|
-
new_requirement = RequirementsUpdater.new(
|
206
|
-
requirements: dependency.requirements,
|
207
|
-
latest_resolvable_version: version.to_s
|
208
|
-
).updated_requirements.first[:requirement]
|
209
|
-
|
210
|
-
json["dependencies"][dependency.name] = new_requirement
|
211
|
-
JSON.dump(json)
|
212
|
-
end
|
213
|
-
|
214
|
-
def original_dependency_details
|
215
|
-
@original_dependency_details ||=
|
216
|
-
Elm::FileParser.new(
|
217
|
-
dependency_files: dependency_files,
|
218
|
-
source: nil
|
219
|
-
).parse
|
220
|
-
end
|
221
|
-
|
222
|
-
def current_version
|
223
|
-
return unless dependency.version
|
224
|
-
|
225
|
-
version_class.new(dependency.version)
|
226
|
-
end
|
227
|
-
|
228
|
-
def version_class
|
229
|
-
Elm::Version
|
230
|
-
end
|
231
|
-
|
232
|
-
def requirement_class
|
233
|
-
Elm::Requirement
|
234
|
-
end
|
235
|
-
end
|
236
|
-
end
|
237
|
-
end
|
238
|
-
end
|