Packages
dagger
0.18.19
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 """
A unique identifier for this CurrentModule.
"""
@spec id(t()) :: {:ok, Dagger.CurrentModuleID.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()]}]) ::
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])
%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
{:ok, Dagger.Client.load_current_module_from_id(Dagger.Global.dag(), id)}
end
end