Current section
Files
Jump to
Current section
Files
lib/mix/tasks/tex.run.ex
defmodule Mix.Tasks.Tex.Run do
use Mix.Task
alias Tex.Types.Workspace
alias Tex.Util
alias Tex.Util.Configuration
require Logger
def run(args) do
[workspace_name] = args
run_workspace(workspace_name)
end
defp run_workspace(workspace_name) do
full_path = Util.compute_workspace_path(workspace_name)
{:ok, workspace} = Workspace.build(
path: full_path
) |> Configuration.load_workspace()
script_loader_lines = Enum.map(workspace.installed_libraries, fn %Tex.Types.Library{} = lib ->
path = Path.join(full_path, "#{lib.name}/#{lib.version}/_build/dev/lib/#{lib.name}/ebin/")
"""
true = Code.prepend_path("#{path}")
Logger.info("Tex - Loaded library into workspace: #{lib.name}@#{lib.version}")
"""
end) |> Enum.join()
script = "require Logger\n" <> script_loader_lines
out_path = Path.join(System.tmp_dir!(), "tex-boot-#{workspace.name}-#{:os.system_time(:millisecond)}.exs")
File.write!(out_path, script)
end
end