dependabot-hex 0.293.0 → 0.295.0

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: 2f96fbbcd594e46f4707887586efc59ae081e18152fdc924b44b6718aea1b79d
4
- data.tar.gz: 403c8e4a903e538aa9fece23bec3ba232311698e9d729be8d226ceb88d283c36
3
+ metadata.gz: 8609a364f6676b8c6c27de9c8bce1b4d443220cce69a803fd0fb693e9ee2b2ac
4
+ data.tar.gz: 8c7ca23ead09dac3b36641bd646537a6f5bbf211b69b7f6daa51afb3db8d0392
5
5
  SHA512:
6
- metadata.gz: 444b471a4fa4074c228af3dd6339a5923eeda50efb6f41394973261a8bd47d962c6f5e81fe8ecf1953b85015353f09cf27ddf878bb23c1e421be9b62c9700ab6
7
- data.tar.gz: 80a8b0c3be399604ce24c82682adf3f7ac16aecd3bd3ded242fb33f5b2d3a6cd192b09a48529147085fe8111a83ae418e26109295758f67a48af74a785869318
6
+ metadata.gz: f99d4ed707fd463b1a6ce67946c9904943d63f7bceb2862284c992c65d23032f909784058c5b7e490993450d20fd6349ccbfdd0bda51c933c6801a0061b27e3e
7
+ data.tar.gz: 7d8482e5d9826404a775193c24ef4a10f7a939c5fc43990e587aceb9390b58aea388c73fa6fa9a899786c01b1f15733f5c7ab009b0770705d7cb6bc44fca8746
data/helpers/build CHANGED
@@ -26,7 +26,5 @@ esac
26
26
 
27
27
  cp $CP_OPTS "$helpers_dir/lib" "$install_dir"
28
28
  cp $CP_OPTS "$helpers_dir/mix.exs" "$install_dir"
29
- cp $CP_OPTS "$helpers_dir/mix.lock" "$install_dir"
30
29
 
31
30
  cd "$install_dir"
32
- mix deps.get
@@ -1,5 +1,8 @@
1
1
  defmodule UpdateChecker do
2
2
  def run(dependency_name) do
3
+ # This is necessary because we can't specify :extra_applications to have :hex in other mixfiles.
4
+ Mix.ensure_application!(:hex)
5
+
3
6
  # Update the lockfile in a session that we can time out
4
7
  task = Task.async(fn -> do_resolution(dependency_name) end)
5
8
 
@@ -45,24 +48,28 @@ end
45
48
 
46
49
  [dependency_name] = System.argv()
47
50
 
48
- case UpdateChecker.run(dependency_name) do
49
- {:ok, version} ->
50
- version = :erlang.term_to_binary({:ok, version})
51
- IO.write(:stdio, version)
51
+ result =
52
+ case UpdateChecker.run(dependency_name) do
53
+ {:ok, version} ->
54
+ {:ok, version}
55
+
56
+ {:error, %Version.InvalidRequirementError{} = error} ->
57
+ {:error, "Invalid requirement: #{error.requirement}"}
52
58
 
53
- {:error, %Version.InvalidRequirementError{} = error} ->
54
- result = :erlang.term_to_binary({:error, "Invalid requirement: #{error.requirement}"})
55
- IO.write(:stdio, result)
59
+ {:error, %Mix.Error{} = error} ->
60
+ {:error, "Dependency resolution failed: #{error.message}"}
56
61
 
57
- {:error, %Mix.Error{} = error} ->
58
- result = :erlang.term_to_binary({:error, "Dependency resolution failed: #{error.message}"})
59
- IO.write(:stdio, result)
62
+ {:error, :dependency_resolution_timed_out} ->
63
+ # We do nothing here because Hex is already printing out a message in stdout
64
+ nil
60
65
 
61
- {:error, :dependency_resolution_timed_out} ->
62
- # We do nothing here because Hex is already printing out a message in stdout
63
- nil
66
+ {:error, error} ->
67
+ {:error, "Unknown error in check_update: #{inspect(error)}"}
68
+ end
64
69
 
65
- {:error, error} ->
66
- result = :erlang.term_to_binary({:error, "Unknown error in check_update: #{inspect(error)}"})
67
- IO.write(:stdio, result)
70
+ if not is_nil(result) do
71
+ result
72
+ |> :erlang.term_to_binary()
73
+ |> Base.encode64()
74
+ |> IO.write()
68
75
  end
@@ -1,3 +1,6 @@
1
+ # This is necessary because we can't specify :extra_applications to have :hex in other mixfiles.
2
+ Mix.ensure_application!(:hex)
3
+
1
4
  dependency =
2
5
  System.argv()
3
6
  |> List.first()
@@ -7,25 +10,16 @@ dependency =
7
10
  {dependency_lock, rest_lock} = Map.split(Mix.Dep.Lock.read(), [dependency])
8
11
  Mix.Dep.Fetcher.by_name([dependency], dependency_lock, rest_lock, [])
9
12
 
10
- System.cmd(
11
- "mix",
12
- [
13
- "deps.get",
14
- "--no-compile",
15
- "--no-elixir-version-check",
16
- ],
17
- [
18
- env: %{
19
- "MIX_EXS" => nil,
20
- "MIX_LOCK" => nil,
21
- "MIX_DEPS" => nil
22
- }
23
- ]
24
- )
13
+ args = [
14
+ "deps.get",
15
+ "--no-compile",
16
+ "--no-elixir-version-check",
17
+ ]
25
18
 
26
- lockfile_content =
27
- "mix.lock"
28
- |> File.read()
29
- |> :erlang.term_to_binary()
19
+ System.cmd("mix", args, [env: %{"MIX_EXS" => nil}])
30
20
 
31
- IO.write(:stdio, lockfile_content)
21
+ "mix.lock"
22
+ |> File.read()
23
+ |> :erlang.term_to_binary()
24
+ |> Base.encode64()
25
+ |> IO.write()
@@ -1,8 +1,25 @@
1
1
  defmodule Parser do
2
+ @allowed_scms [Hex.SCM, Mix.SCM.Git, Mix.SCM.Path]
3
+
2
4
  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))
5
+ # This is necessary because we can't specify :extra_applications to have :hex in other mixfiles.
6
+ Mix.ensure_application!(:hex)
7
+
8
+ with {:ok, deps} <- converge_deps() do
9
+ result =
10
+ for %Mix.Dep{scm: scm} = dep <- deps, scm in @allowed_scms,
11
+ expanded_dep <- expand_deps(dep) do
12
+ build_dependency(expanded_dep.opts[:lock], expanded_dep)
13
+ end
14
+
15
+ {:ok, result}
16
+ end
17
+ end
18
+
19
+ defp converge_deps do
20
+ {:ok, Mix.Dep.Converger.converge()}
21
+ rescue e ->
22
+ {:error, Exception.format_banner(:error, e, __STACKTRACE__)}
6
23
  end
7
24
 
8
25
  defp build_dependency(nil, dep) do
@@ -36,7 +53,7 @@ defmodule Parser do
36
53
  defp parse_groups(only), do: [only]
37
54
 
38
55
  # path dependency
39
- defp parse_dep(%{scm: Mix.SCM.Path, opts: opts} = dep) do
56
+ defp expand_deps(%{scm: Mix.SCM.Path, opts: opts} = dep) do
40
57
  cond do
41
58
  # umbrella dependency - ignore
42
59
  opts[:in_umbrella] ->
@@ -52,10 +69,7 @@ defmodule Parser do
52
69
  end
53
70
 
54
71
  # 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: []
72
+ defp expand_deps(%{scm: scm} = dep) when scm in [Hex.SCM, Mix.SCM.Git], do: [dep]
59
73
 
60
74
  defp umbrella_top_level_dep?(dep) do
61
75
  if Mix.Project.umbrella?() do
@@ -82,7 +96,9 @@ defmodule Parser do
82
96
  |> empty_str_to_nil()
83
97
  end
84
98
 
85
- defp maybe_regex_to_str(s), do: if Regex.regex?(s), do: Regex.source(s), else: s
99
+ defp maybe_regex_to_str(%Regex{} = s), do: Regex.source(s)
100
+ defp maybe_regex_to_str(s), do: s
101
+
86
102
  defp empty_str_to_nil(""), do: nil
87
103
  defp empty_str_to_nil(s), do: s
88
104
 
@@ -99,6 +115,7 @@ defmodule Parser do
99
115
  end
100
116
  end
101
117
 
102
- dependencies = :erlang.term_to_binary({:ok, Parser.run()})
103
-
104
- IO.write(:stdio, dependencies)
118
+ Parser.run()
119
+ |> :erlang.term_to_binary()
120
+ |> Base.encode64()
121
+ |> IO.write()
data/helpers/lib/run.exs CHANGED
@@ -1,10 +1,11 @@
1
1
  defmodule DependencyHelper do
2
2
  def main() do
3
- IO.read(:stdio, :all)
4
- |> Jason.decode!()
3
+ IO.read(:stdio, :eof)
4
+ |> JSON.decode!()
5
5
  |> run()
6
6
  |> case do
7
7
  {output, 0} ->
8
+ output = Base.decode64!(output)
8
9
  if output =~ "No authenticated organization found" do
9
10
  {:error, output}
10
11
  else
@@ -12,6 +13,7 @@ defmodule DependencyHelper do
12
13
  end
13
14
 
14
15
  {error, 1} ->
16
+ Base.decode64!(error)
15
17
  {:error, error}
16
18
  end
17
19
  |> handle_result()
@@ -33,7 +35,7 @@ defmodule DependencyHelper do
33
35
 
34
36
  defp encode_and_write(content) do
35
37
  content
36
- |> Jason.encode!()
38
+ |> JSON.encode!()
37
39
  |> IO.write()
38
40
  end
39
41
 
@@ -67,16 +69,7 @@ defmodule DependencyHelper do
67
69
  script
68
70
  ] ++ args
69
71
 
70
- System.cmd(
71
- "mix",
72
- args,
73
- cd: dir,
74
- env: %{
75
- "MIX_EXS" => nil,
76
- "MIX_LOCK" => nil,
77
- "MIX_DEPS" => nil
78
- }
79
- )
72
+ System.cmd("mix", args, cd: dir, env: %{"MIX_EXS" => nil})
80
73
  end
81
74
 
82
75
  defp set_credentials([]), do: :ok
data/helpers/mix.exs CHANGED
@@ -2,20 +2,16 @@ defmodule DependabotCore.Mixfile do
2
2
  use Mix.Project
3
3
 
4
4
  def project do
5
- [app: :dependabot_core,
6
- version: "0.1.0",
7
- elixir: "~> 1.5",
8
- start_permanent: Mix.env == :prod,
9
- lockfile: System.get_env("MIX_LOCK") || "mix.lock",
10
- deps_path: System.get_env("MIX_DEPS") || "deps",
11
- deps: deps()]
5
+ [
6
+ app: :dependabot_core,
7
+ version: "0.1.0",
8
+ elixir: "~> 1.18",
9
+ start_permanent: Mix.env == :prod,
10
+ deps: []
11
+ ]
12
12
  end
13
13
 
14
14
  def application do
15
- [extra_applications: [:logger]]
16
- end
17
-
18
- defp deps() do
19
- [{:jason, "~> 1.0"}]
15
+ [extra_applications: [:hex, :logger, :ssh]]
20
16
  end
21
17
  end
@@ -117,8 +117,6 @@ module Dependabot
117
117
  def mix_env
118
118
  {
119
119
  "MIX_EXS" => File.join(NativeHelpers.hex_helpers_dir, "mix.exs"),
120
- "MIX_LOCK" => File.join(NativeHelpers.hex_helpers_dir, "mix.lock"),
121
- "MIX_DEPS" => File.join(NativeHelpers.hex_helpers_dir, "deps"),
122
120
  "MIX_QUIET" => "1"
123
121
  }
124
122
  end
@@ -114,8 +114,6 @@ module Dependabot
114
114
  def mix_env
115
115
  {
116
116
  "MIX_EXS" => File.join(NativeHelpers.hex_helpers_dir, "mix.exs"),
117
- "MIX_LOCK" => File.join(NativeHelpers.hex_helpers_dir, "mix.lock"),
118
- "MIX_DEPS" => File.join(NativeHelpers.hex_helpers_dir, "deps"),
119
117
  "MIX_QUIET" => "1"
120
118
  }
121
119
  end
@@ -167,8 +167,6 @@ module Dependabot
167
167
  def mix_env
168
168
  {
169
169
  "MIX_EXS" => File.join(NativeHelpers.hex_helpers_dir, "mix.exs"),
170
- "MIX_LOCK" => File.join(NativeHelpers.hex_helpers_dir, "mix.lock"),
171
- "MIX_DEPS" => File.join(NativeHelpers.hex_helpers_dir, "deps"),
172
170
  "MIX_QUIET" => "1"
173
171
  }
174
172
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-hex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.293.0
4
+ version: 0.295.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-16 00:00:00.000000000 Z
11
+ date: 2025-01-30 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.293.0
19
+ version: 0.295.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.293.0
26
+ version: 0.295.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: debug
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -248,7 +248,6 @@ files:
248
248
  - helpers/lib/parse_deps.exs
249
249
  - helpers/lib/run.exs
250
250
  - helpers/mix.exs
251
- - helpers/mix.lock
252
251
  - lib/dependabot/hex.rb
253
252
  - lib/dependabot/hex/credential_helpers.rb
254
253
  - lib/dependabot/hex/file_fetcher.rb
@@ -274,7 +273,7 @@ licenses:
274
273
  - MIT
275
274
  metadata:
276
275
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
277
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.293.0
276
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.295.0
278
277
  post_install_message:
279
278
  rdoc_options: []
280
279
  require_paths:
data/helpers/mix.lock DELETED
@@ -1,3 +0,0 @@
1
- %{
2
- "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
3
- }