Current section
Files
Jump to
Current section
Files
src/dagger@dsl@module.erl
-module(dagger@dsl@module).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/dagger/dsl/module.gleam").
-export([none/1, include/2, include_dependencies/2, module/1, check/2, checks/2, dependencies/4, description/3, enums/4, generated_context_directory/1, generator/2, generators/2, id/1, interfaces/4, introspection_schema_j_s_o_n/1, name/3, objects/4, runtime/1, sdk/1, serve/4, source/1, sync/1, user_defaults/1, with_description/2, with_enum/2, with_interface/2, with_object/2]).
-export_type([opts/0]).
-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 opts() :: {opts,
gleam@option:option(list(binary())),
gleam@option:option(boolean())}.
-file("src/dagger/dsl/module.gleam", 17).
-spec defaults() -> opts().
defaults() ->
{opts, none, none}.
-file("src/dagger/dsl/module.gleam", 24).
-spec none(opts()) -> opts().
none(Opts) ->
Opts.
-file("src/dagger/dsl/module.gleam", 28).
-spec include(opts(), list(binary())) -> opts().
include(Opts, Val) ->
{opts, {some, Val}, erlang:element(3, Opts)}.
-file("src/dagger/dsl/module.gleam", 32).
-spec include_dependencies(opts(), boolean()) -> opts().
include_dependencies(Opts, Val) ->
{opts, erlang:element(2, Opts), {some, Val}}.
-file("src/dagger/dsl/module.gleam", 36).
-spec module(dagger@dsl@types:module_()) -> dagger@dsl@types:module_().
module(Id) ->
Field = {field,
<<"loadModuleFromID"/utf8>>,
[{<<"id"/utf8>>, {g_deferred, erlang:element(2, Id)}}],
[]},
{module, {pure, [Field]}}.
-file("src/dagger/dsl/module.gleam", 42).
?DOC(" Return the check defined by the module with the given name. Must match to exactly one check.\n").
-spec check(dagger@dsl@types:module_(), binary()) -> dagger@dsl@types:check().
check(Parent, Name) ->
Field = {field, <<"check"/utf8>>, [{<<"name"/utf8>>, {g_string, Name}}], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{check, New_op}.
-file("src/dagger/dsl/module.gleam", 51).
-spec encode_checks(opts()) -> list({binary(), dagger@types:value()}).
encode_checks(Opts) ->
gleam@list:filter_map([case erlang:element(2, Opts) of
{some, Val} ->
{ok,
{<<"include"/utf8>>,
{g_list,
gleam@list:map(Val, fun(X) -> {g_string, X} end)}}};
none ->
{error, nil}
end], fun(X@1) -> X@1 end).
-file("src/dagger/dsl/module.gleam", 61).
?DOC(" Return all checks defined by the module\n").
-spec checks(dagger@dsl@types:module_(), fun((opts()) -> opts())) -> dagger@dsl@types:check_group().
checks(Parent, With_fn) ->
Opts = With_fn(defaults()),
Field = {field, <<"checks"/utf8>>, encode_checks(Opts), []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{check_group, New_op}.
-file("src/dagger/dsl/module.gleam", 72).
?DOC(" The dependencies of the module.\n").
-spec dependencies(
dagger@dsl@types:module_(),
fun((dagger@dsl@types:module_()) -> list(dagger@types:field())),
dagger@types:client(),
fun(({ok, list(dagger@dsl@types:module_())} |
{error, dagger@types:query_error()}) -> UVI)
) -> UVI.
dependencies(Parent, Select, Client, Handler) ->
Subfields = Select({module, {pure, []}}),
Field = {field, <<"dependencies"/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(_) ->
{module, {pure, Full_query}}
end
)}};
{error, _} ->
{pure,
{error,
{decoding_error,
<<"dependencies"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/module.gleam", 94).
?DOC(" The doc string of the module, if any\n").
-spec description(
dagger@dsl@types:module_(),
dagger@types:client(),
fun(({ok, binary()} | {error, dagger@types:query_error()}) -> UVK)
) -> UVK.
description(Parent, Client, Handler) ->
Field = {field, <<"description"/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, <<"description"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/module.gleam", 115).
?DOC(" Enumerations served by this module.\n").
-spec enums(
dagger@dsl@types:module_(),
fun((dagger@dsl@types:type_def()) -> list(dagger@types:field())),
dagger@types:client(),
fun(({ok, list(dagger@dsl@types:type_def())} |
{error, dagger@types:query_error()}) -> UVO)
) -> UVO.
enums(Parent, Select, Client, Handler) ->
Subfields = Select({type_def, {pure, []}}),
Field = {field, <<"enums"/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(_) ->
{type_def, {pure, Full_query}}
end
)}};
{error, _} ->
{pure,
{error, {decoding_error, <<"enums"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/module.gleam", 137).
?DOC(" The generated files and directories made on top of the module source's context directory.\n").
-spec generated_context_directory(dagger@dsl@types:module_()) -> dagger@dsl@types:directory().
generated_context_directory(Parent) ->
Field = {field, <<"generatedContextDirectory"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{directory, New_op}.
-file("src/dagger/dsl/module.gleam", 147).
?DOC(" Return the generator defined by the module with the given name. Must match to exactly one generator.\n").
-spec generator(dagger@dsl@types:module_(), binary()) -> dagger@dsl@types:generator().
generator(Parent, Name) ->
Field = {field,
<<"generator"/utf8>>,
[{<<"name"/utf8>>, {g_string, Name}}],
[]},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{generator, New_op}.
-file("src/dagger/dsl/module.gleam", 156).
-spec encode_generators(opts()) -> list({binary(), dagger@types:value()}).
encode_generators(Opts) ->
gleam@list:filter_map([case erlang:element(2, Opts) of
{some, Val} ->
{ok,
{<<"include"/utf8>>,
{g_list,
gleam@list:map(Val, fun(X) -> {g_string, X} end)}}};
none ->
{error, nil}
end], fun(X@1) -> X@1 end).
-file("src/dagger/dsl/module.gleam", 166).
?DOC(" Return all generators defined by the module\n").
-spec generators(dagger@dsl@types:module_(), fun((opts()) -> opts())) -> dagger@dsl@types:generator_group().
generators(Parent, With_fn) ->
Opts = With_fn(defaults()),
Field = {field, <<"generators"/utf8>>, encode_generators(Opts), []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{generator_group, New_op}.
-file("src/dagger/dsl/module.gleam", 177).
?DOC(" A unique identifier for this Module.\n").
-spec id(dagger@dsl@types:module_()) -> dagger@dsl@types:module_().
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,
{module, New_op}.
-file("src/dagger/dsl/module.gleam", 187).
?DOC(" Interfaces served by this module.\n").
-spec interfaces(
dagger@dsl@types:module_(),
fun((dagger@dsl@types:type_def()) -> list(dagger@types:field())),
dagger@types:client(),
fun(({ok, list(dagger@dsl@types:type_def())} |
{error, dagger@types:query_error()}) -> UVT)
) -> UVT.
interfaces(Parent, Select, Client, Handler) ->
Subfields = Select({type_def, {pure, []}}),
Field = {field, <<"interfaces"/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(_) ->
{type_def, {pure, Full_query}}
end
)}};
{error, _} ->
{pure,
{error,
{decoding_error, <<"interfaces"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/module.gleam", 211).
?DOC(
" The introspection schema JSON file for this module.\n"
" This file represents the schema visible to the module's source code, including all core types and those from the dependencies.\n"
" Note: this is in the context of a module, so some core types may be hidden.\n"
).
-spec introspection_schema_j_s_o_n(dagger@dsl@types:module_()) -> dagger@dsl@types:file().
introspection_schema_j_s_o_n(Parent) ->
Field = {field, <<"introspectionSchemaJSON"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{file, New_op}.
-file("src/dagger/dsl/module.gleam", 221).
?DOC(" The name of the module\n").
-spec name(
dagger@dsl@types:module_(),
dagger@types:client(),
fun(({ok, binary()} | {error, dagger@types:query_error()}) -> UVV)
) -> UVV.
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/module.gleam", 242).
?DOC(" Objects served by this module.\n").
-spec objects(
dagger@dsl@types:module_(),
fun((dagger@dsl@types:type_def()) -> list(dagger@types:field())),
dagger@types:client(),
fun(({ok, list(dagger@dsl@types:type_def())} |
{error, dagger@types:query_error()}) -> UVZ)
) -> UVZ.
objects(Parent, Select, Client, Handler) ->
Subfields = Select({type_def, {pure, []}}),
Field = {field, <<"objects"/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(_) ->
{type_def, {pure, Full_query}}
end
)}};
{error, _} ->
{pure,
{error,
{decoding_error, <<"objects"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/module.gleam", 264).
?DOC(" The container that runs the module's entrypoint. It will fail to execute if the module doesn't compile.\n").
-spec runtime(dagger@dsl@types:module_()) -> dagger@dsl@types:container().
runtime(Parent) ->
Field = {field, <<"runtime"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{container, New_op}.
-file("src/dagger/dsl/module.gleam", 274).
?DOC(" The SDK config used by this module.\n").
-spec sdk(dagger@dsl@types:module_()) -> dagger@dsl@types:s_d_k_config().
sdk(Parent) ->
Field = {field, <<"sdk"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{s_d_k_config, New_op}.
-file("src/dagger/dsl/module.gleam", 283).
-spec encode_serve(opts()) -> list({binary(), dagger@types:value()}).
encode_serve(Opts) ->
gleam@list:filter_map([case erlang:element(3, Opts) of
{some, Val} ->
{ok, {<<"includeDependencies"/utf8>>, {g_bool, Val}}};
none ->
{error, nil}
end], fun(X) -> X end).
-file("src/dagger/dsl/module.gleam", 294).
?DOC(
" Serve a module's API in the current session.\n"
" Note: this can only be called once per session. In the future, it could return a stream or service to remove the side effect.\n"
).
-spec serve(
dagger@dsl@types:module_(),
fun((opts()) -> opts()),
dagger@types:client(),
fun(({ok, nil} | {error, dagger@types:query_error()}) -> UWC)
) -> UWC.
serve(Parent, With_fn, Client, Handler) ->
Opts = With_fn(defaults()),
Field = {field, <<"serve"/utf8>>, encode_serve(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, <<"serve"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).
-file("src/dagger/dsl/module.gleam", 316).
?DOC(" The source for the module.\n").
-spec source(dagger@dsl@types:module_()) -> dagger@dsl@types:module_source().
source(Parent) ->
Field = {field, <<"source"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{module_source, New_op}.
-file("src/dagger/dsl/module.gleam", 326).
?DOC(" Forces evaluation of the module, including any loading into the engine and associated validation.\n").
-spec sync(dagger@dsl@types:module_()) -> dagger@dsl@types:module_().
sync(Parent) ->
Field = {field, <<"sync"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{module, New_op}.
-file("src/dagger/dsl/module.gleam", 336).
?DOC(" User-defined default values, loaded from local .env files.\n").
-spec user_defaults(dagger@dsl@types:module_()) -> dagger@dsl@types:env_file().
user_defaults(Parent) ->
Field = {field, <<"userDefaults"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{env_file, New_op}.
-file("src/dagger/dsl/module.gleam", 346).
?DOC(" Retrieves the module with the given description\n").
-spec with_description(dagger@dsl@types:module_(), binary()) -> dagger@dsl@types:module_().
with_description(Parent, Description) ->
Field = {field,
<<"withDescription"/utf8>>,
[{<<"description"/utf8>>, {g_string, Description}}],
[]},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{module, New_op}.
-file("src/dagger/dsl/module.gleam", 356).
?DOC(" This module plus the given Enum type and associated values\n").
-spec with_enum(dagger@dsl@types:module_(), dagger@dsl@types:type_def()) -> dagger@dsl@types:module_().
with_enum(Parent, Enum) ->
Field = {field,
<<"withEnum"/utf8>>,
[{<<"enum"/utf8>>, {g_deferred, erlang:element(2, Enum)}}],
[]},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{module, New_op}.
-file("src/dagger/dsl/module.gleam", 366).
?DOC(" This module plus the given Interface type and associated functions\n").
-spec with_interface(dagger@dsl@types:module_(), dagger@dsl@types:type_def()) -> dagger@dsl@types:module_().
with_interface(Parent, Iface) ->
Field = {field,
<<"withInterface"/utf8>>,
[{<<"iface"/utf8>>, {g_deferred, erlang:element(2, Iface)}}],
[]},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{module, New_op}.
-file("src/dagger/dsl/module.gleam", 376).
?DOC(" This module plus the given Object type and associated functions.\n").
-spec with_object(dagger@dsl@types:module_(), dagger@dsl@types:type_def()) -> dagger@dsl@types:module_().
with_object(Parent, Object) ->
Field = {field,
<<"withObject"/utf8>>,
[{<<"object"/utf8>>, {g_deferred, erlang:element(2, Object)}}],
[]},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{module, New_op}.