mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-09-14 08:54:35 +08:00
Suggest setup without cache on dependencies error (#2716)
This commit is contained in:
parent
98169e8eb4
commit
28ae207dc9
3 changed files with 43 additions and 10 deletions
|
@ -454,6 +454,7 @@ defprotocol Livebook.Runtime do
|
||||||
{:missing_secret, name :: String.t()}
|
{:missing_secret, name :: String.t()}
|
||||||
| {:interrupt, variant :: :normal | :error, message :: String.t()}
|
| {:interrupt, variant :: :normal | :error, message :: String.t()}
|
||||||
| {:file_entry_forbidden, name :: String.t()}
|
| {:file_entry_forbidden, name :: String.t()}
|
||||||
|
| :dependencies
|
||||||
| nil
|
| nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -189,6 +189,9 @@ defmodule Livebook.Runtime.Evaluator.Formatter do
|
||||||
defp error_context(error) when is_struct(error, Kino.FS.ForbiddenError),
|
defp error_context(error) when is_struct(error, Kino.FS.ForbiddenError),
|
||||||
do: {:file_entry_forbidden, error.name}
|
do: {:file_entry_forbidden, error.name}
|
||||||
|
|
||||||
|
defp error_context(error) when is_struct(error, Mix.Error),
|
||||||
|
do: :dependencies
|
||||||
|
|
||||||
defp error_context(_), do: nil
|
defp error_context(_), do: nil
|
||||||
|
|
||||||
defp erlang_to_output(value) do
|
defp erlang_to_output(value) do
|
||||||
|
|
|
@ -260,11 +260,8 @@ defmodule LivebookWeb.Output do
|
||||||
assigns = %{message: output.message, secret_name: secret_name, session_id: session_id, id: id}
|
assigns = %{message: output.message, secret_name: secret_name, session_id: session_id, id: id}
|
||||||
|
|
||||||
~H"""
|
~H"""
|
||||||
<div class="-m-4 space-x-4 py-4">
|
<div class="flex flex-col gap-4">
|
||||||
<div
|
<div class="flex items-center justify-between gap-2" style="color: var(--ansi-color-red);">
|
||||||
class="flex items-center justify-between border-b px-4 pb-4 mb-4"
|
|
||||||
style="color: var(--ansi-color-red);"
|
|
||||||
>
|
|
||||||
<div class="flex space-x-2 font-editor">
|
<div class="flex space-x-2 font-editor">
|
||||||
<.remix_icon icon="close-circle-line" />
|
<.remix_icon icon="close-circle-line" />
|
||||||
<span>Missing secret <%= inspect(@secret_name) %></span>
|
<span>Missing secret <%= inspect(@secret_name) %></span>
|
||||||
|
@ -273,6 +270,7 @@ defmodule LivebookWeb.Output do
|
||||||
Add secret
|
Add secret
|
||||||
</.button>
|
</.button>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="border-t border-gray-200 -mx-4" />
|
||||||
<%= render_formatted_error_message(@id, @message) %>
|
<%= render_formatted_error_message(@id, @message) %>
|
||||||
</div>
|
</div>
|
||||||
"""
|
"""
|
||||||
|
@ -290,11 +288,8 @@ defmodule LivebookWeb.Output do
|
||||||
}
|
}
|
||||||
|
|
||||||
~H"""
|
~H"""
|
||||||
<div class="-m-4 space-x-4 py-4">
|
<div class="flex flex-col gap-4">
|
||||||
<div
|
<div class="flex items-center justify-between gap-2" style="color: var(--ansi-color-red);">
|
||||||
class="flex items-center justify-between border-b px-4 pb-4 mb-4"
|
|
||||||
style="color: var(--ansi-color-red);"
|
|
||||||
>
|
|
||||||
<div class="flex space-x-2 font-editor">
|
<div class="flex space-x-2 font-editor">
|
||||||
<.remix_icon icon="close-circle-line" />
|
<.remix_icon icon="close-circle-line" />
|
||||||
<span>Forbidden access to file <%= inspect(@file_entry_name) %></span>
|
<span>Forbidden access to file <%= inspect(@file_entry_name) %></span>
|
||||||
|
@ -306,6 +301,7 @@ defmodule LivebookWeb.Output do
|
||||||
Review access
|
Review access
|
||||||
</.button>
|
</.button>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="border-t border-gray-200 -mx-4" />
|
||||||
<%= render_formatted_error_message(@id, @message) %>
|
<%= render_formatted_error_message(@id, @message) %>
|
||||||
</div>
|
</div>
|
||||||
"""
|
"""
|
||||||
|
@ -346,6 +342,39 @@ defmodule LivebookWeb.Output do
|
||||||
"""
|
"""
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp render_output(%{type: :error, context: :dependencies} = output, %{id: id, cell_id: cell_id}) do
|
||||||
|
assigns = %{message: output.message, id: id, cell_id: cell_id}
|
||||||
|
|
||||||
|
if cell_id == Livebook.Notebook.Cell.setup_cell_id() do
|
||||||
|
~H"""
|
||||||
|
<div class="flex flex-col gap-4">
|
||||||
|
<div class="flex items-center justify-between gap-2" style="color: var(--ansi-color-red);">
|
||||||
|
<div class="flex space-x-2 font-editor">
|
||||||
|
<.remix_icon icon="close-circle-line" />
|
||||||
|
<span>
|
||||||
|
Trouble installing dependencies? You may want to retry without cache.
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<.button
|
||||||
|
color="gray"
|
||||||
|
phx-click={
|
||||||
|
JS.push("queue_cell_evaluation",
|
||||||
|
value: %{cell_id: @cell_id, disable_dependencies_cache: true}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
>
|
||||||
|
Setup without cache
|
||||||
|
</.button>
|
||||||
|
</div>
|
||||||
|
<div class="border-t border-gray-200 -mx-4" />
|
||||||
|
<%= render_formatted_error_message(@id, @message) %>
|
||||||
|
</div>
|
||||||
|
"""
|
||||||
|
else
|
||||||
|
render_formatted_error_message(id, output.message)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
defp render_output(%{type: :error, message: message}, %{id: id}) do
|
defp render_output(%{type: :error, message: message}, %{id: id}) do
|
||||||
render_formatted_error_message(id, message)
|
render_formatted_error_message(id, message)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue