Packages
dagger
0.9.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.ex
defmodule Dagger do
@moduledoc """
The [Dagger](https://dagger.io/) SDK for Elixir.
See `getting_start.livemd` for starter point.
"""
defstruct [:client, :query]
@doc """
Connecting to Dagger.
## Options
#{NimbleOptions.docs(Dagger.Internal.Client.connect_schema())}
"""
def connect(opts \\ []) do
with {:ok, graphql_client} <- Dagger.Internal.Client.connect(opts) do
client = %Dagger.Client{
client: graphql_client,
selection: Dagger.QueryBuilder.Selection.query()
}
case Dagger.Client.check_version_compatibility(client, Dagger.EngineConn.engine_version()) do
{:error, reason} -> IO.warn("failed to check version compatibility: #{inspect(reason)}")
_ -> nil
end
{:ok, client}
end
end
@doc """
Similar to `connect/1` but raise exception when found an error.
"""
def connect!(opts \\ []) do
case connect(opts) do
{:ok, query} -> query
error -> raise "Cannot connect to Dagger engine, cause: #{inspect(error)}"
end
end
@doc """
Disconnecting Dagger.
"""
def close(%Dagger.Client{client: client}) do
Dagger.Internal.Client.close(client)
end
end