Packages
dagger
0.17.2
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/module_source.ex
# This file generated by `dagger_codegen`. Please DO NOT EDIT.
defmodule Dagger.ModuleSource do
@moduledoc "The source needed to load and run a module, along with any metadata about the source such as versions/urls/etc."
alias Dagger.Core.Client
alias Dagger.Core.QueryBuilder, as: QB
@derive Dagger.ID
@derive Dagger.Sync
defstruct [:query_builder, :client]
@type t() :: %__MODULE__{}
@doc "Load the source as a module. If this is a local source, the parent directory must have been provided during module source creation"
@spec as_module(t()) :: Dagger.Module.t()
def as_module(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("asModule")
%Dagger.Module{
query_builder: query_builder,
client: module_source.client
}
end
@doc "A human readable ref string representation of this module source."
@spec as_string(t()) :: {:ok, String.t()} | {:error, term()}
def as_string(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("asString")
Client.execute(module_source.client, query_builder)
end
@doc "The ref to clone the root of the git repo from. Only valid for git sources."
@spec clone_ref(t()) :: {:ok, String.t()} | {:error, term()}
def clone_ref(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("cloneRef")
Client.execute(module_source.client, query_builder)
end
@doc "The resolved commit of the git repo this source points to."
@spec commit(t()) :: {:ok, String.t()} | {:error, term()}
def commit(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("commit")
Client.execute(module_source.client, query_builder)
end
@doc "The clients generated for the module."
@spec config_clients(t()) :: {:ok, [Dagger.ModuleConfigClient.t()]} | {:error, term()}
def config_clients(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("configClients") |> QB.select("id")
with {:ok, items} <- Client.execute(module_source.client, query_builder) do
{:ok,
for %{"id" => id} <- items do
%Dagger.ModuleConfigClient{
query_builder:
QB.query()
|> QB.select("loadModuleConfigClientFromID")
|> QB.put_arg("id", id),
client: module_source.client
}
end}
end
end
@doc "Whether an existing dagger.json for the module was found."
@spec config_exists(t()) :: {:ok, boolean()} | {:error, term()}
def config_exists(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("configExists")
Client.execute(module_source.client, query_builder)
end
@doc "The full directory loaded for the module source, including the source code as a subdirectory."
@spec context_directory(t()) :: Dagger.Directory.t()
def context_directory(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("contextDirectory")
%Dagger.Directory{
query_builder: query_builder,
client: module_source.client
}
end
@doc "The dependencies of the module source."
@spec dependencies(t()) :: {:ok, [Dagger.ModuleSource.t()]} | {:error, term()}
def dependencies(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("dependencies") |> QB.select("id")
with {:ok, items} <- Client.execute(module_source.client, query_builder) do
{:ok,
for %{"id" => id} <- items do
%Dagger.ModuleSource{
query_builder:
QB.query()
|> QB.select("loadModuleSourceFromID")
|> QB.put_arg("id", id),
client: module_source.client
}
end}
end
end
@doc "A content-hash of the module source. Module sources with the same digest will output the same generated context and convert into the same module instance."
@spec digest(t()) :: {:ok, String.t()} | {:error, term()}
def digest(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("digest")
Client.execute(module_source.client, query_builder)
end
@doc "The directory containing the module configuration and source code (source code may be in a subdir)."
@spec directory(t(), String.t()) :: Dagger.Directory.t()
def directory(%__MODULE__{} = module_source, path) do
query_builder =
module_source.query_builder |> QB.select("directory") |> QB.put_arg("path", path)
%Dagger.Directory{
query_builder: query_builder,
client: module_source.client
}
end
@doc "The engine version of the module."
@spec engine_version(t()) :: {:ok, String.t()} | {:error, term()}
def engine_version(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("engineVersion")
Client.execute(module_source.client, query_builder)
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__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("generatedContextDirectory")
%Dagger.Directory{
query_builder: query_builder,
client: module_source.client
}
end
@doc "The URL to access the web view of the repository (e.g., GitHub, GitLab, Bitbucket)."
@spec html_repo_url(t()) :: {:ok, String.t()} | {:error, term()}
def html_repo_url(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("htmlRepoURL")
Client.execute(module_source.client, query_builder)
end
@doc "The URL to the source's git repo in a web browser. Only valid for git sources."
@spec html_url(t()) :: {:ok, String.t()} | {:error, term()}
def html_url(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("htmlURL")
Client.execute(module_source.client, query_builder)
end
@doc "A unique identifier for this ModuleSource."
@spec id(t()) :: {:ok, Dagger.ModuleSourceID.t()} | {:error, term()}
def id(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("id")
Client.execute(module_source.client, query_builder)
end
@doc "The kind of module source (currently local, git or dir)."
@spec kind(t()) :: {:ok, Dagger.ModuleSourceKind.t()} | {:error, term()}
def kind(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("kind")
case Client.execute(module_source.client, query_builder) do
{:ok, enum} -> {:ok, Dagger.ModuleSourceKind.from_string(enum)}
error -> error
end
end
@doc "The full absolute path to the context directory on the caller's host filesystem that this module source is loaded from. Only valid for local module sources."
@spec local_context_directory_path(t()) :: {:ok, String.t()} | {:error, term()}
def local_context_directory_path(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("localContextDirectoryPath")
Client.execute(module_source.client, query_builder)
end
@doc "The name of the module, including any setting via the withName API."
@spec module_name(t()) :: {:ok, String.t()} | {:error, term()}
def module_name(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("moduleName")
Client.execute(module_source.client, query_builder)
end
@doc "The original name of the module as read from the module's dagger.json (or set for the first time with the withName API)."
@spec module_original_name(t()) :: {:ok, String.t()} | {:error, term()}
def module_original_name(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("moduleOriginalName")
Client.execute(module_source.client, query_builder)
end
@doc "The original subpath used when instantiating this module source, relative to the context directory."
@spec original_subpath(t()) :: {:ok, String.t()} | {:error, term()}
def original_subpath(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("originalSubpath")
Client.execute(module_source.client, query_builder)
end
@doc "The pinned version of this module source."
@spec pin(t()) :: {:ok, String.t()} | {:error, term()}
def pin(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("pin")
Client.execute(module_source.client, query_builder)
end
@doc "The import path corresponding to the root of the git repo this source points to. Only valid for git sources."
@spec repo_root_path(t()) :: {:ok, String.t()} | {:error, term()}
def repo_root_path(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("repoRootPath")
Client.execute(module_source.client, query_builder)
end
@doc "The SDK configuration of the module."
@spec sdk(t()) :: Dagger.SDKConfig.t() | nil
def sdk(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("sdk")
%Dagger.SDKConfig{
query_builder: query_builder,
client: module_source.client
}
end
@doc "The path, relative to the context directory, that contains the module's dagger.json."
@spec source_root_subpath(t()) :: {:ok, String.t()} | {:error, term()}
def source_root_subpath(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("sourceRootSubpath")
Client.execute(module_source.client, query_builder)
end
@doc "The path to the directory containing the module's source code, relative to the context directory."
@spec source_subpath(t()) :: {:ok, String.t()} | {:error, term()}
def source_subpath(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("sourceSubpath")
Client.execute(module_source.client, query_builder)
end
@doc "Forces evaluation of the module source, including any loading into the engine and associated validation."
@spec sync(t()) :: {:ok, Dagger.ModuleSource.t()} | {:error, term()}
def sync(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("sync")
with {:ok, id} <- Client.execute(module_source.client, query_builder) do
{:ok,
%Dagger.ModuleSource{
query_builder:
QB.query()
|> QB.select("loadModuleSourceFromID")
|> QB.put_arg("id", id),
client: module_source.client
}}
end
end
@doc "The specified version of the git repo this source points to."
@spec version(t()) :: {:ok, String.t()} | {:error, term()}
def version(%__MODULE__{} = module_source) do
query_builder =
module_source.query_builder |> QB.select("version")
Client.execute(module_source.client, query_builder)
end
@doc "Update the module source with a new client to generate."
@spec with_client(t(), String.t(), String.t(), [{:dev, boolean() | nil}]) ::
Dagger.ModuleSource.t()
def with_client(%__MODULE__{} = module_source, generator, output_dir, optional_args \\ []) do
query_builder =
module_source.query_builder
|> QB.select("withClient")
|> QB.put_arg("generator", generator)
|> QB.put_arg("outputDir", output_dir)
|> QB.maybe_put_arg("dev", optional_args[:dev])
%Dagger.ModuleSource{
query_builder: query_builder,
client: module_source.client
}
end
@doc "Append the provided dependencies to the module source's dependency list."
@spec with_dependencies(t(), [Dagger.ModuleSourceID.t()]) :: Dagger.ModuleSource.t()
def with_dependencies(%__MODULE__{} = module_source, dependencies) do
query_builder =
module_source.query_builder
|> QB.select("withDependencies")
|> QB.put_arg("dependencies", dependencies)
%Dagger.ModuleSource{
query_builder: query_builder,
client: module_source.client
}
end
@doc "Upgrade the engine version of the module to the given value."
@spec with_engine_version(t(), String.t()) :: Dagger.ModuleSource.t()
def with_engine_version(%__MODULE__{} = module_source, version) do
query_builder =
module_source.query_builder
|> QB.select("withEngineVersion")
|> QB.put_arg("version", version)
%Dagger.ModuleSource{
query_builder: query_builder,
client: module_source.client
}
end
@doc "Update the module source with additional include patterns for files+directories from its context that are required for building it"
@spec with_includes(t(), [String.t()]) :: Dagger.ModuleSource.t()
def with_includes(%__MODULE__{} = module_source, patterns) do
query_builder =
module_source.query_builder |> QB.select("withIncludes") |> QB.put_arg("patterns", patterns)
%Dagger.ModuleSource{
query_builder: query_builder,
client: module_source.client
}
end
@doc "Update the module source with a new name."
@spec with_name(t(), String.t()) :: Dagger.ModuleSource.t()
def with_name(%__MODULE__{} = module_source, name) do
query_builder =
module_source.query_builder |> QB.select("withName") |> QB.put_arg("name", name)
%Dagger.ModuleSource{
query_builder: query_builder,
client: module_source.client
}
end
@doc "Update the module source with a new SDK."
@spec with_sdk(t(), String.t()) :: Dagger.ModuleSource.t()
def with_sdk(%__MODULE__{} = module_source, source) do
query_builder =
module_source.query_builder |> QB.select("withSDK") |> QB.put_arg("source", source)
%Dagger.ModuleSource{
query_builder: query_builder,
client: module_source.client
}
end
@doc "Update the module source with a new source subpath."
@spec with_source_subpath(t(), String.t()) :: Dagger.ModuleSource.t()
def with_source_subpath(%__MODULE__{} = module_source, path) do
query_builder =
module_source.query_builder |> QB.select("withSourceSubpath") |> QB.put_arg("path", path)
%Dagger.ModuleSource{
query_builder: query_builder,
client: module_source.client
}
end
@doc "Update one or more module dependencies."
@spec with_update_dependencies(t(), [String.t()]) :: Dagger.ModuleSource.t()
def with_update_dependencies(%__MODULE__{} = module_source, dependencies) do
query_builder =
module_source.query_builder
|> QB.select("withUpdateDependencies")
|> QB.put_arg("dependencies", dependencies)
%Dagger.ModuleSource{
query_builder: query_builder,
client: module_source.client
}
end
@doc "Remove the provided dependencies from the module source's dependency list."
@spec without_dependencies(t(), [String.t()]) :: Dagger.ModuleSource.t()
def without_dependencies(%__MODULE__{} = module_source, dependencies) do
query_builder =
module_source.query_builder
|> QB.select("withoutDependencies")
|> QB.put_arg("dependencies", dependencies)
%Dagger.ModuleSource{
query_builder: query_builder,
client: module_source.client
}
end
end
defimpl Jason.Encoder, for: Dagger.ModuleSource do
def encode(module_source, opts) do
{:ok, id} = Dagger.ModuleSource.id(module_source)
Jason.Encode.string(id, opts)
end
end
defimpl Nestru.Decoder, for: Dagger.ModuleSource do
def decode_fields_hint(_struct, _context, id) do
{:ok, Dagger.Client.load_module_source_from_id(Dagger.Global.dag(), id)}
end
end