Current section

Files

Jump to
dagger lib dagger gen current_module.ex
Raw

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