defmodule Dagger do @moduledoc """ The [Dagger](https://dagger.io/) SDK for Elixir. See `getting_start.livemd` for starter point. """ use Dagger.QueryBuilder defstruct [:client, :query] @doc """ Connecting to Dagger. """ def connect(opts \\ []) do with {:ok, client} <- Dagger.Client.connect(opts) do {:ok, %Dagger.Query{ client: client, selection: query() }} 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 disconnect(%Dagger.Query{client: client}) do Dagger.Client.disconnect(client) end end