dependabot-core 0.87.15 → 0.88.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 +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/dependabot/file_fetchers.rb +0 -2
- data/lib/dependabot/file_parsers.rb +0 -2
- data/lib/dependabot/file_updaters.rb +0 -2
- data/lib/dependabot/metadata_finders.rb +0 -2
- data/lib/dependabot/pull_request_creator/message_builder.rb +1 -1
- data/lib/dependabot/update_checkers.rb +0 -2
- data/lib/dependabot/update_checkers/php/composer/version_resolver.rb +3 -2
- data/lib/dependabot/utils.rb +0 -4
- data/lib/dependabot/version.rb +1 -1
- metadata +1 -22
- data/helpers/elixir/bin/check_update.exs +0 -92
- data/helpers/elixir/bin/do_update.exs +0 -39
- data/helpers/elixir/bin/parse_deps.exs +0 -103
- data/helpers/elixir/bin/run.exs +0 -76
- data/helpers/elixir/mix.exs +0 -21
- data/helpers/elixir/mix.lock +0 -3
- data/lib/dependabot/file_fetchers/elixir/hex.rb +0 -78
- data/lib/dependabot/file_parsers/elixir/hex.rb +0 -134
- data/lib/dependabot/file_updaters/elixir/hex.rb +0 -71
- data/lib/dependabot/file_updaters/elixir/hex/lockfile_updater.rb +0 -147
- data/lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb +0 -53
- data/lib/dependabot/file_updaters/elixir/hex/mixfile_requirement_updater.rb +0 -74
- data/lib/dependabot/file_updaters/elixir/hex/mixfile_sanitizer.rb +0 -28
- data/lib/dependabot/file_updaters/elixir/hex/mixfile_updater.rb +0 -98
- data/lib/dependabot/metadata_finders/elixir/hex.rb +0 -69
- data/lib/dependabot/update_checkers/elixir/hex.rb +0 -274
- data/lib/dependabot/update_checkers/elixir/hex/file_preparer.rb +0 -193
- data/lib/dependabot/update_checkers/elixir/hex/requirements_updater.rb +0 -177
- data/lib/dependabot/update_checkers/elixir/hex/version_resolver.rb +0 -175
- data/lib/dependabot/utils/elixir/requirement.rb +0 -54
- data/lib/dependabot/utils/elixir/version.rb +0 -66
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5baac5ebf6cb593e43f66de38fbab67da68f55f771a576cdec418db8f71f2722
|
|
4
|
+
data.tar.gz: a72cb17501ab4a87a3c240684d62c224dcf1537aa8331585867d2f41440a0f21
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2c0fe474ca371161091421f0f903b9765eb2c9f992f52397687520a48b75aac41b0500145c1d4ec29e15dc905ff245606b5f856efc1b5a6f96c3261392bb1d51
|
|
7
|
+
data.tar.gz: ec89afa574296a90926ca749556abb99f68be8b814c1ae5c7fc879afb55f8a08f810eeeabe5f1e514291eb557b6c23dcc24a0385b82227de4958823fa76b7b5a
|
data/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
require "dependabot/file_fetchers/ruby/bundler"
|
|
4
4
|
require "dependabot/file_fetchers/java_script/npm_and_yarn"
|
|
5
5
|
require "dependabot/file_fetchers/php/composer"
|
|
6
|
-
require "dependabot/file_fetchers/elixir/hex"
|
|
7
6
|
require "dependabot/file_fetchers/go/dep"
|
|
8
7
|
|
|
9
8
|
module Dependabot
|
|
@@ -12,7 +11,6 @@ module Dependabot
|
|
|
12
11
|
"bundler" => FileFetchers::Ruby::Bundler,
|
|
13
12
|
"npm_and_yarn" => FileFetchers::JavaScript::NpmAndYarn,
|
|
14
13
|
"composer" => FileFetchers::Php::Composer,
|
|
15
|
-
"hex" => FileFetchers::Elixir::Hex,
|
|
16
14
|
"dep" => FileFetchers::Go::Dep
|
|
17
15
|
}
|
|
18
16
|
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
require "dependabot/file_parsers/ruby/bundler"
|
|
4
4
|
require "dependabot/file_parsers/java_script/npm_and_yarn"
|
|
5
5
|
require "dependabot/file_parsers/php/composer"
|
|
6
|
-
require "dependabot/file_parsers/elixir/hex"
|
|
7
6
|
require "dependabot/file_parsers/go/dep"
|
|
8
7
|
|
|
9
8
|
module Dependabot
|
|
@@ -12,7 +11,6 @@ module Dependabot
|
|
|
12
11
|
"bundler" => FileParsers::Ruby::Bundler,
|
|
13
12
|
"npm_and_yarn" => FileParsers::JavaScript::NpmAndYarn,
|
|
14
13
|
"composer" => FileParsers::Php::Composer,
|
|
15
|
-
"hex" => FileParsers::Elixir::Hex,
|
|
16
14
|
"dep" => FileParsers::Go::Dep
|
|
17
15
|
}
|
|
18
16
|
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
require "dependabot/file_updaters/ruby/bundler"
|
|
4
4
|
require "dependabot/file_updaters/java_script/npm_and_yarn"
|
|
5
5
|
require "dependabot/file_updaters/php/composer"
|
|
6
|
-
require "dependabot/file_updaters/elixir/hex"
|
|
7
6
|
require "dependabot/file_updaters/go/dep"
|
|
8
7
|
|
|
9
8
|
module Dependabot
|
|
@@ -12,7 +11,6 @@ module Dependabot
|
|
|
12
11
|
"bundler" => FileUpdaters::Ruby::Bundler,
|
|
13
12
|
"npm_and_yarn" => FileUpdaters::JavaScript::NpmAndYarn,
|
|
14
13
|
"composer" => FileUpdaters::Php::Composer,
|
|
15
|
-
"hex" => FileUpdaters::Elixir::Hex,
|
|
16
14
|
"dep" => FileUpdaters::Go::Dep
|
|
17
15
|
}
|
|
18
16
|
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
require "dependabot/metadata_finders/ruby/bundler"
|
|
4
4
|
require "dependabot/metadata_finders/java_script/npm_and_yarn"
|
|
5
5
|
require "dependabot/metadata_finders/php/composer"
|
|
6
|
-
require "dependabot/metadata_finders/elixir/hex"
|
|
7
6
|
require "dependabot/metadata_finders/go/dep"
|
|
8
7
|
|
|
9
8
|
module Dependabot
|
|
@@ -12,7 +11,6 @@ module Dependabot
|
|
|
12
11
|
"bundler" => MetadataFinders::Ruby::Bundler,
|
|
13
12
|
"npm_and_yarn" => MetadataFinders::JavaScript::NpmAndYarn,
|
|
14
13
|
"composer" => MetadataFinders::Php::Composer,
|
|
15
|
-
"hex" => MetadataFinders::Elixir::Hex,
|
|
16
14
|
"dep" => MetadataFinders::Go::Dep
|
|
17
15
|
}
|
|
18
16
|
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
require "dependabot/update_checkers/ruby/bundler"
|
|
4
4
|
require "dependabot/update_checkers/java_script/npm_and_yarn"
|
|
5
5
|
require "dependabot/update_checkers/php/composer"
|
|
6
|
-
require "dependabot/update_checkers/elixir/hex"
|
|
7
6
|
require "dependabot/update_checkers/go/dep"
|
|
8
7
|
|
|
9
8
|
module Dependabot
|
|
@@ -12,7 +11,6 @@ module Dependabot
|
|
|
12
11
|
"bundler" => UpdateCheckers::Ruby::Bundler,
|
|
13
12
|
"npm_and_yarn" => UpdateCheckers::JavaScript::NpmAndYarn,
|
|
14
13
|
"composer" => UpdateCheckers::Php::Composer,
|
|
15
|
-
"hex" => UpdateCheckers::Elixir::Hex,
|
|
16
14
|
"dep" => UpdateCheckers::Go::Dep
|
|
17
15
|
}
|
|
18
16
|
|
|
@@ -129,8 +129,9 @@ module Dependabot
|
|
|
129
129
|
elsif error.message.include?("requested PHP extension")
|
|
130
130
|
extensions = error.message.scan(/\sext\-.*?\s/).map(&:strip).uniq
|
|
131
131
|
msg = "Dependabot's installed extensions didn't match those "\
|
|
132
|
-
"required by your application
|
|
133
|
-
"
|
|
132
|
+
"required by your application.\n\n"\
|
|
133
|
+
"Please add the following extensions to the platform "\
|
|
134
|
+
"config in your composer.json to allow Dependabot to run: "\
|
|
134
135
|
"#{extensions.join(', ')}.\n\n"\
|
|
135
136
|
"The full error raised was:\n\n#{error.message}"
|
|
136
137
|
raise Dependabot::DependencyFileNotResolvable, msg
|
data/lib/dependabot/utils.rb
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require "dependabot/utils/elixir/version"
|
|
4
3
|
require "dependabot/utils/java_script/version"
|
|
5
4
|
require "dependabot/utils/php/version"
|
|
6
5
|
require "dependabot/utils/go/version"
|
|
7
6
|
|
|
8
|
-
require "dependabot/utils/elixir/requirement"
|
|
9
7
|
require "dependabot/utils/java_script/requirement"
|
|
10
8
|
require "dependabot/utils/php/requirement"
|
|
11
9
|
require "dependabot/utils/ruby/requirement"
|
|
@@ -21,7 +19,6 @@ module Dependabot
|
|
|
21
19
|
"docker" => Gem::Version,
|
|
22
20
|
"npm_and_yarn" => Utils::JavaScript::Version,
|
|
23
21
|
"composer" => Utils::Php::Version,
|
|
24
|
-
"hex" => Utils::Elixir::Version,
|
|
25
22
|
"dep" => Utils::Go::Version
|
|
26
23
|
}
|
|
27
24
|
|
|
@@ -42,7 +39,6 @@ module Dependabot
|
|
|
42
39
|
"docker" => Utils::Ruby::Requirement,
|
|
43
40
|
"npm_and_yarn" => Utils::JavaScript::Requirement,
|
|
44
41
|
"composer" => Utils::Php::Requirement,
|
|
45
|
-
"hex" => Utils::Elixir::Requirement,
|
|
46
42
|
"dep" => Utils::Go::Requirement
|
|
47
43
|
}
|
|
48
44
|
|
data/lib/dependabot/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dependabot-core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.88.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dependabot
|
|
@@ -298,12 +298,6 @@ files:
|
|
|
298
298
|
- CHANGELOG.md
|
|
299
299
|
- LICENSE
|
|
300
300
|
- README.md
|
|
301
|
-
- helpers/elixir/bin/check_update.exs
|
|
302
|
-
- helpers/elixir/bin/do_update.exs
|
|
303
|
-
- helpers/elixir/bin/parse_deps.exs
|
|
304
|
-
- helpers/elixir/bin/run.exs
|
|
305
|
-
- helpers/elixir/mix.exs
|
|
306
|
-
- helpers/elixir/mix.lock
|
|
307
301
|
- helpers/go/Makefile
|
|
308
302
|
- helpers/go/go.mod
|
|
309
303
|
- helpers/go/go.sum
|
|
@@ -371,7 +365,6 @@ files:
|
|
|
371
365
|
- lib/dependabot/file_fetchers.rb
|
|
372
366
|
- lib/dependabot/file_fetchers/README.md
|
|
373
367
|
- lib/dependabot/file_fetchers/base.rb
|
|
374
|
-
- lib/dependabot/file_fetchers/elixir/hex.rb
|
|
375
368
|
- lib/dependabot/file_fetchers/go/dep.rb
|
|
376
369
|
- lib/dependabot/file_fetchers/java_script/npm_and_yarn.rb
|
|
377
370
|
- lib/dependabot/file_fetchers/java_script/npm_and_yarn/path_dependency_builder.rb
|
|
@@ -384,7 +377,6 @@ files:
|
|
|
384
377
|
- lib/dependabot/file_parsers/README.md
|
|
385
378
|
- lib/dependabot/file_parsers/base.rb
|
|
386
379
|
- lib/dependabot/file_parsers/base/dependency_set.rb
|
|
387
|
-
- lib/dependabot/file_parsers/elixir/hex.rb
|
|
388
380
|
- lib/dependabot/file_parsers/go/dep.rb
|
|
389
381
|
- lib/dependabot/file_parsers/java_script/npm_and_yarn.rb
|
|
390
382
|
- lib/dependabot/file_parsers/php/composer.rb
|
|
@@ -394,12 +386,6 @@ files:
|
|
|
394
386
|
- lib/dependabot/file_updaters.rb
|
|
395
387
|
- lib/dependabot/file_updaters/README.md
|
|
396
388
|
- lib/dependabot/file_updaters/base.rb
|
|
397
|
-
- lib/dependabot/file_updaters/elixir/hex.rb
|
|
398
|
-
- lib/dependabot/file_updaters/elixir/hex/lockfile_updater.rb
|
|
399
|
-
- lib/dependabot/file_updaters/elixir/hex/mixfile_git_pin_updater.rb
|
|
400
|
-
- lib/dependabot/file_updaters/elixir/hex/mixfile_requirement_updater.rb
|
|
401
|
-
- lib/dependabot/file_updaters/elixir/hex/mixfile_sanitizer.rb
|
|
402
|
-
- lib/dependabot/file_updaters/elixir/hex/mixfile_updater.rb
|
|
403
389
|
- lib/dependabot/file_updaters/go/dep.rb
|
|
404
390
|
- lib/dependabot/file_updaters/go/dep/lockfile_updater.rb
|
|
405
391
|
- lib/dependabot/file_updaters/go/dep/manifest_updater.rb
|
|
@@ -429,7 +415,6 @@ files:
|
|
|
429
415
|
- lib/dependabot/metadata_finders/base/changelog_pruner.rb
|
|
430
416
|
- lib/dependabot/metadata_finders/base/commits_finder.rb
|
|
431
417
|
- lib/dependabot/metadata_finders/base/release_finder.rb
|
|
432
|
-
- lib/dependabot/metadata_finders/elixir/hex.rb
|
|
433
418
|
- lib/dependabot/metadata_finders/go/dep.rb
|
|
434
419
|
- lib/dependabot/metadata_finders/java_script/npm_and_yarn.rb
|
|
435
420
|
- lib/dependabot/metadata_finders/php/composer.rb
|
|
@@ -448,10 +433,6 @@ files:
|
|
|
448
433
|
- lib/dependabot/update_checkers.rb
|
|
449
434
|
- lib/dependabot/update_checkers/README.md
|
|
450
435
|
- lib/dependabot/update_checkers/base.rb
|
|
451
|
-
- lib/dependabot/update_checkers/elixir/hex.rb
|
|
452
|
-
- lib/dependabot/update_checkers/elixir/hex/file_preparer.rb
|
|
453
|
-
- lib/dependabot/update_checkers/elixir/hex/requirements_updater.rb
|
|
454
|
-
- lib/dependabot/update_checkers/elixir/hex/version_resolver.rb
|
|
455
436
|
- lib/dependabot/update_checkers/go/dep.rb
|
|
456
437
|
- lib/dependabot/update_checkers/go/dep/file_preparer.rb
|
|
457
438
|
- lib/dependabot/update_checkers/go/dep/latest_version_finder.rb
|
|
@@ -476,8 +457,6 @@ files:
|
|
|
476
457
|
- lib/dependabot/update_checkers/ruby/bundler/shared_bundler_helpers.rb
|
|
477
458
|
- lib/dependabot/update_checkers/ruby/bundler/version_resolver.rb
|
|
478
459
|
- lib/dependabot/utils.rb
|
|
479
|
-
- lib/dependabot/utils/elixir/requirement.rb
|
|
480
|
-
- lib/dependabot/utils/elixir/version.rb
|
|
481
460
|
- lib/dependabot/utils/go/path_converter.rb
|
|
482
461
|
- lib/dependabot/utils/go/requirement.rb
|
|
483
462
|
- lib/dependabot/utils/go/shared_helper.rb
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
defmodule UpdateChecker do
|
|
2
|
-
def run(dependency_name, credentials) do
|
|
3
|
-
set_credentials(credentials)
|
|
4
|
-
|
|
5
|
-
# Update the lockfile in a session that we can time out
|
|
6
|
-
task = Task.async(fn -> do_resolution(dependency_name) end)
|
|
7
|
-
case Task.yield(task, 30000) || Task.shutdown(task) do
|
|
8
|
-
{:ok, {:ok, :resolution_successful}} ->
|
|
9
|
-
# Read the new lock
|
|
10
|
-
{updated_lock, _updated_rest_lock} =
|
|
11
|
-
Map.split(Mix.Dep.Lock.read(), [String.to_atom(dependency_name)])
|
|
12
|
-
|
|
13
|
-
# Get the new dependency version
|
|
14
|
-
version =
|
|
15
|
-
updated_lock
|
|
16
|
-
|> Map.get(String.to_atom(dependency_name))
|
|
17
|
-
|> elem(2)
|
|
18
|
-
{:ok, version}
|
|
19
|
-
|
|
20
|
-
{:ok, {:error, error}} -> {:error, error}
|
|
21
|
-
|
|
22
|
-
nil -> {:error, :dependency_resolution_timed_out}
|
|
23
|
-
|
|
24
|
-
{:exit, reason} -> {:error, reason}
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
defp set_credentials(credentials) do
|
|
29
|
-
credentials
|
|
30
|
-
|> Enum.reduce([], fn cred, acc ->
|
|
31
|
-
if List.last(acc) == nil || List.last(acc)[:token] do
|
|
32
|
-
List.insert_at(acc, -1, %{organization: cred})
|
|
33
|
-
else
|
|
34
|
-
{item, acc} = List.pop_at(acc, -1)
|
|
35
|
-
item = Map.put(item, :token, cred)
|
|
36
|
-
List.insert_at(acc, -1, item)
|
|
37
|
-
end
|
|
38
|
-
end)
|
|
39
|
-
|> Enum.each(fn cred ->
|
|
40
|
-
hexpm = Hex.Repo.get_repo("hexpm")
|
|
41
|
-
|
|
42
|
-
repo = %{
|
|
43
|
-
url: hexpm.url <> "/repos/#{cred.organization}",
|
|
44
|
-
public_key: nil,
|
|
45
|
-
auth_key: cred.token
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
Hex.Config.read()
|
|
49
|
-
|> Hex.Config.read_repos()
|
|
50
|
-
|> Map.put("hexpm:#{cred.organization}", repo)
|
|
51
|
-
|> Hex.Config.update_repos()
|
|
52
|
-
end)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
defp do_resolution(dependency_name) do
|
|
56
|
-
# Fetch dependencies that needs updating
|
|
57
|
-
{dependency_lock, rest_lock} =
|
|
58
|
-
Map.split(Mix.Dep.Lock.read(), [String.to_atom(dependency_name)])
|
|
59
|
-
|
|
60
|
-
try do
|
|
61
|
-
Mix.Dep.Fetcher.by_name([dependency_name], dependency_lock, rest_lock, [])
|
|
62
|
-
{:ok, :resolution_successful}
|
|
63
|
-
rescue
|
|
64
|
-
error -> {:error, error}
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
[dependency_name | credentials] = System.argv()
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
case UpdateChecker.run(dependency_name, credentials) do
|
|
73
|
-
{:ok, version} ->
|
|
74
|
-
version = :erlang.term_to_binary({:ok, version})
|
|
75
|
-
IO.write(:stdio, version)
|
|
76
|
-
|
|
77
|
-
{:error, %Hex.Version.InvalidRequirementError{} = error} ->
|
|
78
|
-
result = :erlang.term_to_binary({:error, "Invalid requirement: #{error.requirement}"})
|
|
79
|
-
IO.write(:stdio, result)
|
|
80
|
-
|
|
81
|
-
{:error, %Mix.Error{} = error} ->
|
|
82
|
-
result = :erlang.term_to_binary({:error, "Dependency resolution failed: #{error.message}"})
|
|
83
|
-
IO.write(:stdio, result)
|
|
84
|
-
|
|
85
|
-
{:error, :dependency_resolution_timed_out} ->
|
|
86
|
-
# We do nothing here because Hex is already printing out a message in stdout
|
|
87
|
-
nil
|
|
88
|
-
|
|
89
|
-
{:error, error} ->
|
|
90
|
-
result = :erlang.term_to_binary({:error, "Unknown error in check_update: #{inspect(error)}"})
|
|
91
|
-
IO.write(:stdio, result)
|
|
92
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
[dependency_name | credentials] = System.argv()
|
|
2
|
-
|
|
3
|
-
grouped_creds = Enum.reduce credentials, [], fn cred, acc ->
|
|
4
|
-
if List.last(acc) == nil || List.last(acc)[:token] do
|
|
5
|
-
List.insert_at(acc, -1, %{ organization: cred })
|
|
6
|
-
else
|
|
7
|
-
{ item, acc } = List.pop_at(acc, -1)
|
|
8
|
-
item = Map.put(item, :token, cred)
|
|
9
|
-
List.insert_at(acc, -1, item)
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
Enum.each grouped_creds, fn cred ->
|
|
14
|
-
hexpm = Hex.Repo.get_repo("hexpm")
|
|
15
|
-
repo = %{
|
|
16
|
-
url: hexpm.url <> "/repos/#{cred.organization}",
|
|
17
|
-
public_key: nil,
|
|
18
|
-
auth_key: cred.token
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
Hex.Config.read()
|
|
22
|
-
|> Hex.Config.read_repos()
|
|
23
|
-
|> Map.put("hexpm:#{cred.organization}", repo)
|
|
24
|
-
|> Hex.Config.update_repos()
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# dependency atom
|
|
28
|
-
dependency = String.to_atom(dependency_name)
|
|
29
|
-
|
|
30
|
-
# Fetch dependencies that needs updating
|
|
31
|
-
{dependency_lock, rest_lock} = Map.split(Mix.Dep.Lock.read(), [dependency])
|
|
32
|
-
Mix.Dep.Fetcher.by_name([dependency_name], dependency_lock, rest_lock, [])
|
|
33
|
-
|
|
34
|
-
lockfile_content =
|
|
35
|
-
"mix.lock"
|
|
36
|
-
|> File.read()
|
|
37
|
-
|> :erlang.term_to_binary()
|
|
38
|
-
|
|
39
|
-
IO.write(:stdio, lockfile_content)
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
defmodule Parser do
|
|
2
|
-
def run do
|
|
3
|
-
Mix.Dep.load_on_environment([])
|
|
4
|
-
|> Enum.flat_map(&parse_dep/1)
|
|
5
|
-
|> Enum.map(&build_dependency(&1.opts[:lock], &1))
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
defp build_dependency(nil, dep) do
|
|
9
|
-
%{
|
|
10
|
-
name: dep.app,
|
|
11
|
-
from: Path.relative_to_cwd(dep.from),
|
|
12
|
-
groups: [],
|
|
13
|
-
requirement: normalise_requirement(dep.requirement),
|
|
14
|
-
top_level: dep.top_level || umbrella_top_level_dep?(dep)
|
|
15
|
-
}
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
defp build_dependency(lock, dep) do
|
|
19
|
-
{version, checksum, source} = parse_lock(lock)
|
|
20
|
-
groups = parse_groups(dep.opts[:only])
|
|
21
|
-
|
|
22
|
-
%{
|
|
23
|
-
name: dep.app,
|
|
24
|
-
from: Path.relative_to_cwd(dep.from),
|
|
25
|
-
version: version,
|
|
26
|
-
groups: groups,
|
|
27
|
-
checksum: checksum,
|
|
28
|
-
requirement: normalise_requirement(dep.requirement),
|
|
29
|
-
source: source,
|
|
30
|
-
top_level: dep.top_level || umbrella_top_level_dep?(dep)
|
|
31
|
-
}
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
defp parse_groups(nil), do: []
|
|
35
|
-
defp parse_groups(only) when is_list(only), do: only
|
|
36
|
-
defp parse_groups(only), do: [only]
|
|
37
|
-
|
|
38
|
-
# path dependency
|
|
39
|
-
defp parse_dep(%{scm: Mix.SCM.Path, opts: opts} = dep) do
|
|
40
|
-
cond do
|
|
41
|
-
# umbrella dependency - ignore
|
|
42
|
-
opts[:in_umbrella] ->
|
|
43
|
-
[]
|
|
44
|
-
|
|
45
|
-
# umbrella application
|
|
46
|
-
opts[:from_umbrella] ->
|
|
47
|
-
Enum.reject(dep.deps, fn dep -> dep.opts[:in_umbrella] end)
|
|
48
|
-
|
|
49
|
-
true ->
|
|
50
|
-
[]
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# hex, git dependency
|
|
55
|
-
defp parse_dep(%{scm: scm} = dep) when scm in [Hex.SCM, Mix.SCM.Git], do: [dep]
|
|
56
|
-
|
|
57
|
-
# unsupported
|
|
58
|
-
defp parse_dep(_dep), do: []
|
|
59
|
-
|
|
60
|
-
defp umbrella_top_level_dep?(dep) do
|
|
61
|
-
if Mix.Project.umbrella?() do
|
|
62
|
-
apps_paths = Path.expand(Mix.Project.config()[:apps_path], File.cwd!())
|
|
63
|
-
String.contains?(Path.dirname(Path.dirname(dep.from)), apps_paths)
|
|
64
|
-
else
|
|
65
|
-
false
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
defp parse_lock({:git, repo_url, checksum, opts}),
|
|
70
|
-
do: {nil, checksum, git_source(repo_url, opts)}
|
|
71
|
-
|
|
72
|
-
defp parse_lock({:hex, _app, version, checksum, _managers, _dependencies, _source}),
|
|
73
|
-
do: {version, checksum, nil}
|
|
74
|
-
|
|
75
|
-
defp parse_lock({:hex, _app, version, checksum, _managers, _dependencies}),
|
|
76
|
-
do: {version, checksum, nil}
|
|
77
|
-
|
|
78
|
-
defp normalise_requirement(req) do
|
|
79
|
-
req
|
|
80
|
-
|> maybe_regex_to_str()
|
|
81
|
-
|> empty_str_to_nil()
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
defp maybe_regex_to_str(s), do: if Regex.regex?(s), do: Regex.source(s), else: s
|
|
85
|
-
defp empty_str_to_nil(""), do: nil
|
|
86
|
-
defp empty_str_to_nil(s), do: s
|
|
87
|
-
|
|
88
|
-
def git_source(repo_url, opts) do
|
|
89
|
-
ref = opts[:ref] || opts[:tag]
|
|
90
|
-
ref = if is_list(ref), do: to_string(ref), else: ref
|
|
91
|
-
|
|
92
|
-
%{
|
|
93
|
-
type: "git",
|
|
94
|
-
url: repo_url,
|
|
95
|
-
branch: opts[:branch] || "master",
|
|
96
|
-
ref: ref
|
|
97
|
-
}
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
dependencies = :erlang.term_to_binary({:ok, Parser.run()})
|
|
102
|
-
|
|
103
|
-
IO.write(:stdio, dependencies)
|