Packages

Gleam SDK for Dagger — type-safe pipelines via GraphQL codegen

Current section

Files

Jump to
dagger_gleam src dagger@dsl@engine.erl
Raw

src/dagger@dsl@engine.erl

-module(dagger@dsl@engine).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/dagger/dsl/engine.gleam").
-export([none/1, opt_key/2, opt_use_default_policy/2, opt_max_used_space/2, opt_reserved_space/2, opt_min_free_space/2, opt_target_space/2, engine/0, clients/3, engine_id/1, local_cache/1, name/3, engine_cache/1, entry_set/2, cache_id/1, max_used_space/3, min_free_space/3, prune/4, reserved_space/3, target_space/3, engine_cache_entry_set/1, disk_space_bytes/3, entries/4, entry_count/3, cache_entry_set_id/1]).
-export_type([for_prune/0, for_entry_set/0, opts/1]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-type for_prune() :: any().
-type for_entry_set() :: any().
-opaque opts(SQS) :: {opts,
gleam@option:option(binary()),
gleam@option:option(boolean()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary())} |
{gleam_phantom, SQS}.
-file("src/dagger/dsl/engine.gleam", 24).
-spec defaults() -> opts(any()).
defaults() ->
{opts, none, none, none, none, none, none}.
-file("src/dagger/dsl/engine.gleam", 35).
-spec none(opts(SQV)) -> opts(SQV).
none(Opts) ->
Opts.
-file("src/dagger/dsl/engine.gleam", 39).
-spec opt_key(opts(for_entry_set()), binary()) -> opts(for_entry_set()).
opt_key(Opts, Val) ->
{opts,
{some, Val},
erlang:element(3, Opts),
erlang:element(4, Opts),
erlang:element(5, Opts),
erlang:element(6, Opts),
erlang:element(7, Opts)}.
-file("src/dagger/dsl/engine.gleam", 43).
-spec opt_use_default_policy(opts(for_prune()), boolean()) -> opts(for_prune()).
opt_use_default_policy(Opts, Val) ->
{opts,
erlang:element(2, Opts),
{some, Val},
erlang:element(4, Opts),
erlang:element(5, Opts),
erlang:element(6, Opts),
erlang:element(7, Opts)}.
-file("src/dagger/dsl/engine.gleam", 47).
-spec opt_max_used_space(opts(for_prune()), binary()) -> opts(for_prune()).
opt_max_used_space(Opts, Val) ->
{opts,
erlang:element(2, Opts),
erlang:element(3, Opts),
{some, Val},
erlang:element(5, Opts),
erlang:element(6, Opts),
erlang:element(7, Opts)}.
-file("src/dagger/dsl/engine.gleam", 51).
-spec opt_reserved_space(opts(for_prune()), binary()) -> opts(for_prune()).
opt_reserved_space(Opts, Val) ->
{opts,
erlang:element(2, Opts),
erlang:element(3, Opts),
erlang:element(4, Opts),
{some, Val},
erlang:element(6, Opts),
erlang:element(7, Opts)}.
-file("src/dagger/dsl/engine.gleam", 55).
-spec opt_min_free_space(opts(for_prune()), binary()) -> opts(for_prune()).
opt_min_free_space(Opts, Val) ->
{opts,
erlang:element(2, Opts),
erlang:element(3, Opts),
erlang:element(4, Opts),
erlang:element(5, Opts),
{some, Val},
erlang:element(7, Opts)}.
-file("src/dagger/dsl/engine.gleam", 59).
-spec opt_target_space(opts(for_prune()), binary()) -> opts(for_prune()).
opt_target_space(Opts, Val) ->
{opts,
erlang:element(2, Opts),
erlang:element(3, Opts),
erlang:element(4, Opts),
erlang:element(5, Opts),
erlang:element(6, Opts),
{some, Val}}.
-file("src/dagger/dsl/engine.gleam", 63).
-spec engine() -> dagger@dsl@types:engine().
engine() ->
Field = {field, <<"engine"/utf8>>, [], []},
{engine, {pure, [Field]}}.
-file("src/dagger/dsl/engine.gleam", 69).
?DOC(" The list of connected client IDs\n").
-spec clients(
dagger@dsl@types:engine(),
dagger@types:client(),
fun(({ok, list(binary())} | {error, dagger@types:query_error()}) -> SRM)
) -> SRM.
clients(Parent, Client, Handler) ->
Field = {field, <<"clients"/utf8>>, [], []},
Op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) ->
Full_query = lists:append(Q, [Field]),
{fetch,
Full_query,
{decoder, fun gleam@dynamic@decode:decode_dynamic/1},
fun(Dyn) ->
Path = dagger@types:make_path(Full_query),
case gleam@dynamic@decode:run(
Dyn,
gleam@dynamic@decode:at(
Path,
gleam@dynamic@decode:list(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
)
)
) of
{ok, Val} ->
{pure, {ok, Val}};
{error, _} ->
{pure,
{error,
{decoding_error, <<"clients"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/engine.gleam", 90).
?DOC(" A unique identifier for this Engine.\n").
-spec engine_id(dagger@dsl@types:engine()) -> dagger@dsl@types:engine().
engine_id(Parent) ->
Field = {field, <<"id"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{engine, New_op}.
-file("src/dagger/dsl/engine.gleam", 100).
?DOC(" The local (on-disk) cache for the Dagger engine\n").
-spec local_cache(dagger@dsl@types:engine()) -> dagger@dsl@types:engine_cache().
local_cache(Parent) ->
Field = {field, <<"localCache"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{engine_cache, New_op}.
-file("src/dagger/dsl/engine.gleam", 110).
?DOC(" The name of the engine instance.\n").
-spec name(
dagger@dsl@types:engine(),
dagger@types:client(),
fun(({ok, binary()} | {error, dagger@types:query_error()}) -> SRO)
) -> SRO.
name(Parent, Client, Handler) ->
Field = {field, <<"name"/utf8>>, [], []},
Op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) ->
Full_query = lists:append(Q, [Field]),
{fetch,
Full_query,
{decoder, fun gleam@dynamic@decode:decode_dynamic/1},
fun(Dyn) ->
Path = dagger@types:make_path(Full_query),
case gleam@dynamic@decode:run(
Dyn,
gleam@dynamic@decode:at(
Path,
{decoder,
fun gleam@dynamic@decode:decode_string/1}
)
) of
{ok, Val} ->
{pure, {ok, Val}};
{error, _} ->
{pure,
{error, {decoding_error, <<"name"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/engine.gleam", 130).
-spec engine_cache(dagger@dsl@types:engine_cache()) -> dagger@dsl@types:engine_cache().
engine_cache(Id) ->
Field = {field,
<<"loadEngineCacheFromID"/utf8>>,
[{<<"id"/utf8>>, {g_deferred, erlang:element(2, Id)}}],
[]},
{engine_cache, {pure, [Field]}}.
-file("src/dagger/dsl/engine.gleam", 135).
-spec encode_entry_set(opts(any())) -> list({binary(), dagger@types:value()}).
encode_entry_set(Opts) ->
gleam@list:filter_map([case erlang:element(2, Opts) of
{some, Val} ->
{ok, {<<"key"/utf8>>, {g_string, Val}}};
none ->
{error, nil}
end], fun(X) -> X end).
-file("src/dagger/dsl/engine.gleam", 145).
?DOC(" The current set of entries in the cache\n").
-spec entry_set(
dagger@dsl@types:engine_cache(),
fun((opts(for_entry_set())) -> opts(for_entry_set()))
) -> dagger@dsl@types:engine_cache_entry_set().
entry_set(Parent, With_fn) ->
Opts = With_fn(defaults()),
Field = {field, <<"entrySet"/utf8>>, encode_entry_set(Opts), []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{engine_cache_entry_set, New_op}.
-file("src/dagger/dsl/engine.gleam", 156).
?DOC(" A unique identifier for this EngineCache.\n").
-spec cache_id(dagger@dsl@types:engine_cache()) -> dagger@dsl@types:engine_cache().
cache_id(Parent) ->
Field = {field, <<"id"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{engine_cache, New_op}.
-file("src/dagger/dsl/engine.gleam", 166).
?DOC(" The maximum bytes to keep in the cache without pruning.\n").
-spec max_used_space(
dagger@dsl@types:engine_cache(),
dagger@types:client(),
fun(({ok, integer()} | {error, dagger@types:query_error()}) -> SRV)
) -> SRV.
max_used_space(Parent, Client, Handler) ->
Field = {field, <<"maxUsedSpace"/utf8>>, [], []},
Op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) ->
Full_query = lists:append(Q, [Field]),
{fetch,
Full_query,
{decoder, fun gleam@dynamic@decode:decode_dynamic/1},
fun(Dyn) ->
Path = dagger@types:make_path(Full_query),
case gleam@dynamic@decode:run(
Dyn,
gleam@dynamic@decode:at(
Path,
{decoder, fun gleam@dynamic@decode:decode_int/1}
)
) of
{ok, Val} ->
{pure, {ok, Val}};
{error, _} ->
{pure,
{error,
{decoding_error,
<<"maxUsedSpace"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/engine.gleam", 187).
?DOC(" The target amount of free disk space the garbage collector will attempt to leave.\n").
-spec min_free_space(
dagger@dsl@types:engine_cache(),
dagger@types:client(),
fun(({ok, integer()} | {error, dagger@types:query_error()}) -> SRX)
) -> SRX.
min_free_space(Parent, Client, Handler) ->
Field = {field, <<"minFreeSpace"/utf8>>, [], []},
Op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) ->
Full_query = lists:append(Q, [Field]),
{fetch,
Full_query,
{decoder, fun gleam@dynamic@decode:decode_dynamic/1},
fun(Dyn) ->
Path = dagger@types:make_path(Full_query),
case gleam@dynamic@decode:run(
Dyn,
gleam@dynamic@decode:at(
Path,
{decoder, fun gleam@dynamic@decode:decode_int/1}
)
) of
{ok, Val} ->
{pure, {ok, Val}};
{error, _} ->
{pure,
{error,
{decoding_error,
<<"minFreeSpace"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/engine.gleam", 207).
-spec encode_prune(opts(any())) -> list({binary(), dagger@types:value()}).
encode_prune(Opts) ->
gleam@list:filter_map([case erlang:element(3, Opts) of
{some, Val} ->
{ok, {<<"useDefaultPolicy"/utf8>>, {g_bool, Val}}};
none ->
{error, nil}
end, case erlang:element(4, Opts) of
{some, Val@1} ->
{ok, {<<"maxUsedSpace"/utf8>>, {g_string, Val@1}}};
none ->
{error, nil}
end, case erlang:element(5, Opts) of
{some, Val@2} ->
{ok, {<<"reservedSpace"/utf8>>, {g_string, Val@2}}};
none ->
{error, nil}
end, case erlang:element(6, Opts) of
{some, Val@3} ->
{ok, {<<"minFreeSpace"/utf8>>, {g_string, Val@3}}};
none ->
{error, nil}
end, case erlang:element(7, Opts) of
{some, Val@4} ->
{ok, {<<"targetSpace"/utf8>>, {g_string, Val@4}}};
none ->
{error, nil}
end], fun(X) -> X end).
-file("src/dagger/dsl/engine.gleam", 233).
?DOC(" Prune the cache of releaseable entries\n").
-spec prune(
dagger@dsl@types:engine_cache(),
fun((opts(for_prune())) -> opts(for_prune())),
dagger@types:client(),
fun(({ok, nil} | {error, dagger@types:query_error()}) -> SSE)
) -> SSE.
prune(Parent, With_fn, Client, Handler) ->
Opts = With_fn(defaults()),
Field = {field, <<"prune"/utf8>>, encode_prune(Opts), []},
Op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) ->
Full_query = lists:append(Q, [Field]),
{fetch,
Full_query,
{decoder, fun gleam@dynamic@decode:decode_dynamic/1},
fun(Dyn) ->
Path = dagger@types:make_path(Full_query),
case gleam@dynamic@decode:run(
Dyn,
gleam@dynamic@decode:at(
Path,
{decoder,
fun gleam@dynamic@decode:decode_dynamic/1}
)
) of
{ok, _} ->
{pure, {ok, nil}};
{error, _} ->
{pure,
{error, {decoding_error, <<"prune"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/engine.gleam", 255).
?DOC(" The minimum amount of disk space this policy is guaranteed to retain.\n").
-spec reserved_space(
dagger@dsl@types:engine_cache(),
dagger@types:client(),
fun(({ok, integer()} | {error, dagger@types:query_error()}) -> SSG)
) -> SSG.
reserved_space(Parent, Client, Handler) ->
Field = {field, <<"reservedSpace"/utf8>>, [], []},
Op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) ->
Full_query = lists:append(Q, [Field]),
{fetch,
Full_query,
{decoder, fun gleam@dynamic@decode:decode_dynamic/1},
fun(Dyn) ->
Path = dagger@types:make_path(Full_query),
case gleam@dynamic@decode:run(
Dyn,
gleam@dynamic@decode:at(
Path,
{decoder, fun gleam@dynamic@decode:decode_int/1}
)
) of
{ok, Val} ->
{pure, {ok, Val}};
{error, _} ->
{pure,
{error,
{decoding_error,
<<"reservedSpace"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/engine.gleam", 276).
?DOC(" The target number of bytes to keep when pruning.\n").
-spec target_space(
dagger@dsl@types:engine_cache(),
dagger@types:client(),
fun(({ok, integer()} | {error, dagger@types:query_error()}) -> SSI)
) -> SSI.
target_space(Parent, Client, Handler) ->
Field = {field, <<"targetSpace"/utf8>>, [], []},
Op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) ->
Full_query = lists:append(Q, [Field]),
{fetch,
Full_query,
{decoder, fun gleam@dynamic@decode:decode_dynamic/1},
fun(Dyn) ->
Path = dagger@types:make_path(Full_query),
case gleam@dynamic@decode:run(
Dyn,
gleam@dynamic@decode:at(
Path,
{decoder, fun gleam@dynamic@decode:decode_int/1}
)
) of
{ok, Val} ->
{pure, {ok, Val}};
{error, _} ->
{pure,
{error,
{decoding_error, <<"targetSpace"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/engine.gleam", 296).
-spec engine_cache_entry_set(dagger@dsl@types:engine_cache_entry_set()) -> dagger@dsl@types:engine_cache_entry_set().
engine_cache_entry_set(Id) ->
Field = {field,
<<"loadEngineCacheEntrySetFromID"/utf8>>,
[{<<"id"/utf8>>, {g_deferred, erlang:element(2, Id)}}],
[]},
{engine_cache_entry_set, {pure, [Field]}}.
-file("src/dagger/dsl/engine.gleam", 302).
?DOC(" The total disk space used by the cache entries in this set.\n").
-spec disk_space_bytes(
dagger@dsl@types:engine_cache_entry_set(),
dagger@types:client(),
fun(({ok, integer()} | {error, dagger@types:query_error()}) -> SSK)
) -> SSK.
disk_space_bytes(Parent, Client, Handler) ->
Field = {field, <<"diskSpaceBytes"/utf8>>, [], []},
Op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) ->
Full_query = lists:append(Q, [Field]),
{fetch,
Full_query,
{decoder, fun gleam@dynamic@decode:decode_dynamic/1},
fun(Dyn) ->
Path = dagger@types:make_path(Full_query),
case gleam@dynamic@decode:run(
Dyn,
gleam@dynamic@decode:at(
Path,
{decoder, fun gleam@dynamic@decode:decode_int/1}
)
) of
{ok, Val} ->
{pure, {ok, Val}};
{error, _} ->
{pure,
{error,
{decoding_error,
<<"diskSpaceBytes"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/engine.gleam", 323).
?DOC(" The list of individual cache entries in the set\n").
-spec entries(
dagger@dsl@types:engine_cache_entry_set(),
fun((dagger@dsl@types:engine_cache_entry()) -> list(dagger@types:field())),
dagger@types:client(),
fun(({ok, list(dagger@dsl@types:engine_cache_entry())} |
{error, dagger@types:query_error()}) -> SSO)
) -> SSO.
entries(Parent, Select, Client, Handler) ->
Subfields = Select({engine_cache_entry, {pure, []}}),
Field = {field, <<"entries"/utf8>>, [], Subfields},
Op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) ->
Full_query = lists:append(Q, [Field]),
{fetch,
Full_query,
{decoder, fun gleam@dynamic@decode:decode_dynamic/1},
fun(Dyn) ->
Path = dagger@types:make_path(Full_query),
case gleam@dynamic@decode:run(
Dyn,
gleam@dynamic@decode:at(
Path,
gleam@dynamic@decode:list(
{decoder,
fun gleam@dynamic@decode:decode_dynamic/1}
)
)
) of
{ok, Items} ->
{pure,
{ok,
gleam@list:map(
Items,
fun(_) ->
{engine_cache_entry,
{pure, Full_query}}
end
)}};
{error, _} ->
{pure,
{error,
{decoding_error, <<"entries"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/engine.gleam", 345).
?DOC(" The number of cache entries in this set.\n").
-spec entry_count(
dagger@dsl@types:engine_cache_entry_set(),
dagger@types:client(),
fun(({ok, integer()} | {error, dagger@types:query_error()}) -> SSQ)
) -> SSQ.
entry_count(Parent, Client, Handler) ->
Field = {field, <<"entryCount"/utf8>>, [], []},
Op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) ->
Full_query = lists:append(Q, [Field]),
{fetch,
Full_query,
{decoder, fun gleam@dynamic@decode:decode_dynamic/1},
fun(Dyn) ->
Path = dagger@types:make_path(Full_query),
case gleam@dynamic@decode:run(
Dyn,
gleam@dynamic@decode:at(
Path,
{decoder, fun gleam@dynamic@decode:decode_int/1}
)
) of
{ok, Val} ->
{pure, {ok, Val}};
{error, _} ->
{pure,
{error,
{decoding_error, <<"entryCount"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/engine.gleam", 366).
?DOC(" A unique identifier for this EngineCacheEntrySet.\n").
-spec cache_entry_set_id(dagger@dsl@types:engine_cache_entry_set()) -> dagger@dsl@types:engine_cache_entry_set().
cache_entry_set_id(Parent) ->
Field = {field, <<"id"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{engine_cache_entry_set, New_op}.