Packages
livebook
0.19.1
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/mix/tasks/compile.ensure_livebook_priv.ex
defmodule Mix.Tasks.Compile.EnsureLivebookPriv do
@moduledoc false
use Mix.Task
@impl true
def run(_args) do
# Livebook may be installed as a depepdency. This is the case in
# nerves_livebook, but also when using escript.install. In those
# cases assets.setup is not called, so we use this custom compiler
# to invoke the assets build and make those work transparently.
#
# Note that this is not relevant for escript.install from Hex,
# because we publish the package with priv/ already built and
# without the source assets. However, it is relevant when
# installing escript from GitHub.
# Use an absolute path, instead of relying on the current mix
# project, since livebook may be a dependency.
project_dir = Path.expand("../../..", __DIR__)
priv_static_dir = Path.join(project_dir, "priv/static")
if Mix.env() == :prod and not File.exists?(priv_static_dir) do
# If livebook is a dependency, it doesn't get it's own deps/
# dir, instead it is a sibling in the deps folder. We rely on
# deps/ dir being available in assets/package.json. To make it
# work, we symlink the deps dir. If the deps dir is present,
# this simply fails.
_ = File.ln_s(Mix.Project.deps_path(), Path.join(project_dir, "deps"))
Mix.shell().info("Generating priv/static")
Mix.Task.run("bun.install", ~w"--if-missing")
Mix.Task.run("bun", ~w"assets install")
Mix.Task.run("bun", ~w" assets run build")
end
:ok
end
end