Packages
dagger
0.8.5
0.21.7
0.21.6
0.21.5
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.8
0.20.7
0.20.6
0.20.5
0.20.4
0.20.3
0.20.2
0.20.1
0.20.0
0.19.11
0.19.10
0.19.9
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.19
0.18.18
0.18.17
0.18.16
0.18.15
0.18.14
0.18.13
0.18.12
0.18.11
0.18.10
0.18.9
0.18.8
0.18.7
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.2
0.17.1
0.17.0
0.16.3
0.16.2
0.16.1
0.16.0
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.0
0.13.7
0.13.6
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.9
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.2
0.0.0
retired
Dagger SDK for Elixir
Current section
Files
Jump to
Current section
Files
lib/dagger/codegen/elixir/function.ex
defmodule Dagger.Codegen.Elixir.Function do
@moduledoc false
@id_modules_map %{
"CacheID" => "cache_volume",
"ContainerID" => "container",
"DirectoryID" => "directory",
"FileID" => "file",
"ProjectCommandID" => "project_command",
"ProjectID" => "project",
"SecretID" => "secret",
"SocketID" => "socket"
}
def id_module_to_var_name(id_mod), do: Map.fetch!(@id_modules_map, id_mod)
def format_var_name(name) when is_binary(name) do
format_name(name)
end
defp format_fun_name(name) when is_atom(name) do
name
|> to_string()
|> format_fun_name()
end
defp format_fun_name(name) when is_binary(name) do
format_name(name)
end
defp format_name(name) when is_binary(name) do
name
|> Macro.underscore()
|> String.to_atom()
end
def define(fun_name, args, guard \\ nil, body, opts \\ []) when is_list(args) do
fun_name = format_fun_name(fun_name)
doc = opts[:doc] |> doc_to_quote()
deprecated = opts[:deprecated] |> deprecated_to_quote()
typespec = opts[:spec] |> spec_to_quote(fun_name)
fun = [
case guard do
nil ->
quote do
def unquote(fun_name)(unquote_splicing(args)) do
unquote(body)
end
end
guard ->
quote do
def unquote(fun_name)(unquote_splicing(args)) when unquote(guard) do
unquote(body)
end
end
end
]
quote do
(unquote_splicing(doc ++ deprecated ++ typespec ++ fun))
end
end
defp doc_to_quote(nil) do
[
quote do
@doc false
end
]
end
defp doc_to_quote(doc) when is_binary(doc) do
[
quote do
@doc unquote(doc)
end
]
end
defp deprecated_to_quote(nil), do: []
defp deprecated_to_quote(deprecated) do
[
quote do
@deprecated unquote(deprecated)
end
]
end
defp spec_to_quote(nil, _), do: []
defp spec_to_quote({arg_types, return_type}, fun_name) do
[
quote do
@spec unquote(fun_name)(unquote_splicing(arg_types)) :: unquote(return_type)
end
]
end
end