Packages

Use Elixir as a scripting language with Hex packages, anywhere on your system. No Mix project required!

Current section

Files

Jump to
teex lib util escript.ex
Raw

lib/util/escript.ex

defmodule Teex.Util.Escript do
@moduledoc false
def extract_modules(script_path, mod_names) when is_list(mod_names) do
{:ok, data} = :escript.extract('#{script_path}', [])
mod_names = Enum.map(mod_names, &'Elixir.#{&1}.beam')
{:ok, modules} = :zip.extract(data[:archive], [:memory, {:file_list, mod_names}])
modules
end
@spec load_module_object_code(maybe_improper_list) :: :ok
def load_module_object_code(modules) when is_list(modules) do
Enum.each(modules, fn {name, code} ->
name = name |> to_string() |> String.replace(".beam", "")
:code.load_binary(String.to_atom(name), String.to_charlist(name), code)
end)
end
end