Packages
livebook
0.19.0
0.19.8
0.19.7
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.14.0-rc.1
0.14.0-rc.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
Automate code & data workflows with interactive notebooks
Current section
Files
Jump to
Current section
Files
lib/livebook/apps/path_app_spec.ex
defmodule Livebook.Apps.PathAppSpec do
# App spec pointing to an app notebook in the local file system.
#
# Note that the struct holds the path, rather than the notebook and
# files source. The app spec may be sent across nodes and processes,
# so this way we do less copying.
@enforce_keys [:slug, :path]
defstruct [:slug, :path, :password, should_warmup: true, version: "1"]
end
defimpl Livebook.Apps.AppSpec, for: Livebook.Apps.PathAppSpec do
def load(app_spec, files_tmp_path) do
case File.read(app_spec.path) do
{:ok, source} ->
{notebook, %{warnings: warnings}} = Livebook.LiveMarkdown.notebook_from_livemd(source)
notebook = put_in(notebook.app_settings.password, app_spec.password)
notebook_file = Livebook.FileSystem.File.local(app_spec.path)
files_dir = Livebook.Session.files_dir_for_notebook(notebook_file)
warnings = Enum.map(warnings, &("Import: " <> &1))
files_tmp_dir =
files_tmp_path
|> Livebook.FileSystem.Utils.ensure_dir_path()
|> Livebook.FileSystem.File.local()
with :ok <- Livebook.Notebook.copy_files(notebook, files_dir, files_tmp_dir) do
{:ok, %{notebook: notebook, warnings: warnings}}
end
{:error, reason} ->
{:error,
"failed to read app notebook file at #{app_spec.path}, reason: #{:file.format_error(reason)}"}
end
end
def should_warmup?(app_spec) do
app_spec.should_warmup
end
end