Skip to content

Commit 6c463b2

Browse files
jonatankloskojosevalim
authored andcommitted
Ensure install-related functions do not crash when Mix is not started (#13391)
1 parent e310dd9 commit 6c463b2

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

lib/mix/lib/mix.ex

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,7 +1047,7 @@ defmodule Mix do
10471047

10481048
@doc false
10491049
def in_install_project(fun) do
1050-
case Mix.State.get(:installed) do
1050+
case safe_get_installed() do
10511051
{id, dynamic_config} ->
10521052
config = install_project_config(dynamic_config)
10531053

@@ -1075,7 +1075,7 @@ defmodule Mix do
10751075
@doc since: "1.16.2"
10761076
@spec install_project_dir() :: Path.t() | nil
10771077
def install_project_dir() do
1078-
case Mix.State.get(:installed) do
1078+
case safe_get_installed() do
10791079
{id, _dynamic_config} -> install_project_dir(id)
10801080
nil -> nil
10811081
end
@@ -1086,7 +1086,17 @@ defmodule Mix do
10861086
"""
10871087
@doc since: "1.13.0"
10881088
def installed? do
1089-
Mix.State.get(:installed) != nil
1089+
safe_get_installed() != nil
1090+
end
1091+
1092+
defp safe_get_installed() do
1093+
if mix_started?() do
1094+
Mix.State.get(:installed)
1095+
end
1096+
end
1097+
1098+
defp mix_started?() do
1099+
Process.whereis(Mix.State) != nil
10901100
end
10911101

10921102
defp stop_apps([]), do: :ok

0 commit comments

Comments
 (0)