Packages
dagger
0.21.3
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/gen/current_module.ex
# This file generated by `dagger_codegen`. Please DO NOT EDIT.
defmodule Dagger.CurrentModule do
@moduledoc """
Reflective module API provided to functions at runtime.
"""
use Dagger.Core.Base, kind: :object, name: "CurrentModule"
alias Dagger.Core.Client
alias Dagger.Core.QueryBuilder, as: QB
@derive Dagger.ID
defstruct [:query_builder, :client]
@type t() :: %__MODULE__{}
@doc """
The dependencies of the module.
"""
@spec dependencies(t()) :: {:ok, [Dagger.Module.t()]} | {:error, term()}
def dependencies(%__MODULE__{} = current_module) do
query_builder =
current_module.query_builder |> QB.select("dependencies") |> QB.select("id")
with {:ok, items} <- Client.execute(current_module.client, query_builder) do
{:ok,
for %{"id" => id} <- items do
%Dagger.Module{
query_builder:
QB.query()
|> QB.select("node")
|> QB.put_arg("id", id)
|> QB.inline_fragment("Module"),
client: current_module.client
}
end}
end
end
@doc """
The generated files and directories made on top of the module source's context directory.
"""
@spec generated_context_directory(t()) :: Dagger.Directory.t()
def generated_context_directory(%__MODULE__{} = current_module) do
query_builder =
current_module.query_builder |> QB.select("generatedContextDirectory")
%Dagger.Directory{
query_builder: query_builder,
client: current_module.client
}
end
@doc """
Return all generators defined by the module
> #### Experimental {: .warning}
>
> "This API is highly experimental and may be removed or replaced entirely."
"""
@spec generators(t(), [{:include, [String.t()]}]) :: Dagger.GeneratorGroup.t()
def generators(%__MODULE__{} = current_module, optional_args \\ []) do
query_builder =
current_module.query_builder
|> QB.select("generators")
|> QB.maybe_put_arg("include", optional_args[:include])
%Dagger.GeneratorGroup{
query_builder: query_builder,
client: current_module.client
}
end
@doc """
A unique identifier for this CurrentModule.
"""
@spec id(t()) :: {:ok, String.t()} | {:error, term()}
def id(%__MODULE__{} = current_module) do
query_builder =
current_module.query_builder |> QB.select("id")
Client.execute(current_module.client, query_builder)
end
@doc """
The name of the module being executed in
"""
@spec name(t()) :: {:ok, String.t()} | {:error, term()}
def name(%__MODULE__{} = current_module) do
query_builder =
current_module.query_builder |> QB.select("name")
Client.execute(current_module.client, query_builder)
end
@doc """
The directory containing the module's source code loaded into the engine (plus any generated code that may have been created).
"""
@spec source(t()) :: Dagger.Directory.t()
def source(%__MODULE__{} = current_module) do
query_builder =
current_module.query_builder |> QB.select("source")
%Dagger.Directory{
query_builder: query_builder,
client: current_module.client
}
end
@doc """
Load a directory from the module's scratch working directory, including any changes that may have been made to it during module function execution.
"""
@spec workdir(t(), String.t(), [
{:exclude, [String.t()]},
{:include, [String.t()]},
{:gitignore, boolean() | nil}
]) :: Dagger.Directory.t()
def workdir(%__MODULE__{} = current_module, path, optional_args \\ []) do
query_builder =
current_module.query_builder
|> QB.select("workdir")
|> QB.put_arg("path", path)
|> QB.maybe_put_arg("exclude", optional_args[:exclude])
|> QB.maybe_put_arg("include", optional_args[:include])
|> QB.maybe_put_arg("gitignore", optional_args[:gitignore])
%Dagger.Directory{
query_builder: query_builder,
client: current_module.client
}
end
@doc """
Load a file from the module's scratch working directory, including any changes that may have been made to it during module function execution.Load a file from the module's scratch working directory, including any changes that may have been made to it during module function execution.
"""
@spec workdir_file(t(), String.t()) :: Dagger.File.t()
def workdir_file(%__MODULE__{} = current_module, path) do
query_builder =
current_module.query_builder |> QB.select("workdirFile") |> QB.put_arg("path", path)
%Dagger.File{
query_builder: query_builder,
client: current_module.client
}
end
end
defimpl Jason.Encoder, for: Dagger.CurrentModule do
def encode(current_module, opts) do
{:ok, id} = Dagger.CurrentModule.id(current_module)
Jason.Encode.string(id, opts)
end
end
defimpl Nestru.Decoder, for: Dagger.CurrentModule do
def decode_fields_hint(_struct, _context, id) do
alias Dagger.Core.QueryBuilder, as: QB
dag = Dagger.Global.dag()
{:ok,
%Dagger.CurrentModule{
query_builder:
dag.query_builder
|> QB.select("node")
|> QB.put_arg("id", id)
|> QB.inline_fragment("CurrentModule"),
client: dag.client
}}
end
end