Packages

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

Current section

Files

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

src/dagger@dsl@address.erl

-module(dagger@dsl@address).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/dagger/dsl/address.gleam").
-export([none/1, opt_exclude/2, opt_include/2, opt_gitignore/2, opt_no_cache/2, address/1, container/1, directory/2, file/2, git_ref/1, git_repository/1, id/1, secret/1, service/1, socket/1, value/3]).
-export_type([directory_fns/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 directory_fns() :: directory | file.
-opaque opts(GCK) :: {opts,
gleam@option:option(list(binary())),
gleam@option:option(list(binary())),
gleam@option:option(boolean()),
gleam@option:option(boolean())} |
{gleam_phantom, GCK}.
-file("src/dagger/dsl/address.gleam", 24).
-spec defaults() -> opts(any()).
defaults() ->
{opts, none, none, none, none}.
-file("src/dagger/dsl/address.gleam", 33).
-spec none(opts(GCN)) -> opts(GCN).
none(Opts) ->
Opts.
-file("src/dagger/dsl/address.gleam", 37).
-spec opt_exclude(opts(directory_fns()), list(binary())) -> opts(directory_fns()).
opt_exclude(Opts, Val) ->
{opts,
{some, Val},
erlang:element(3, Opts),
erlang:element(4, Opts),
erlang:element(5, Opts)}.
-file("src/dagger/dsl/address.gleam", 41).
-spec opt_include(opts(directory_fns()), list(binary())) -> opts(directory_fns()).
opt_include(Opts, Val) ->
{opts,
erlang:element(2, Opts),
{some, Val},
erlang:element(4, Opts),
erlang:element(5, Opts)}.
-file("src/dagger/dsl/address.gleam", 45).
-spec opt_gitignore(opts(directory_fns()), boolean()) -> opts(directory_fns()).
opt_gitignore(Opts, Val) ->
{opts,
erlang:element(2, Opts),
erlang:element(3, Opts),
{some, Val},
erlang:element(5, Opts)}.
-file("src/dagger/dsl/address.gleam", 49).
-spec opt_no_cache(opts(directory_fns()), boolean()) -> opts(directory_fns()).
opt_no_cache(Opts, Val) ->
{opts,
erlang:element(2, Opts),
erlang:element(3, Opts),
erlang:element(4, Opts),
{some, Val}}.
-file("src/dagger/dsl/address.gleam", 53).
-spec address(binary()) -> dagger@dsl@types:address().
address(Value) ->
Field = {field,
<<"address"/utf8>>,
[{<<"value"/utf8>>, {g_string, Value}}],
[]},
{address, {pure, [Field]}}.
-file("src/dagger/dsl/address.gleam", 59).
?DOC(" Load a container from the address.\n").
-spec container(dagger@dsl@types:address()) -> dagger@dsl@types:container().
container(Parent) ->
Field = {field, <<"container"/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/address.gleam", 68).
-spec encode_directory(opts(any())) -> list({binary(), dagger@types:value()}).
encode_directory(Opts) ->
gleam@list:filter_map([case erlang:element(2, Opts) of
{some, Val} ->
{ok,
{<<"exclude"/utf8>>,
{g_list,
gleam@list:map(Val, fun(X) -> {g_string, X} end)}}};
none ->
{error, nil}
end, case erlang:element(3, Opts) of
{some, Val@1} ->
{ok,
{<<"include"/utf8>>,
{g_list,
gleam@list:map(
Val@1,
fun(X@1) -> {g_string, X@1} end
)}}};
none ->
{error, nil}
end, case erlang:element(4, Opts) of
{some, Val@2} ->
{ok, {<<"gitignore"/utf8>>, {g_bool, Val@2}}};
none ->
{error, nil}
end, case erlang:element(5, Opts) of
{some, Val@3} ->
{ok, {<<"noCache"/utf8>>, {g_bool, Val@3}}};
none ->
{error, nil}
end], fun(X@2) -> X@2 end).
-file("src/dagger/dsl/address.gleam", 90).
?DOC(" Load a directory from the address.\n").
-spec directory(
dagger@dsl@types:address(),
fun((opts(directory_fns())) -> opts(directory_fns()))
) -> dagger@dsl@types:directory().
directory(Parent, With_fn) ->
Opts = With_fn(defaults()),
Field = {field, <<"directory"/utf8>>, encode_directory(Opts), []},
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/address.gleam", 100).
-spec encode_file(opts(any())) -> list({binary(), dagger@types:value()}).
encode_file(Opts) ->
gleam@list:filter_map([case erlang:element(2, Opts) of
{some, Val} ->
{ok,
{<<"exclude"/utf8>>,
{g_list,
gleam@list:map(Val, fun(X) -> {g_string, X} end)}}};
none ->
{error, nil}
end, case erlang:element(3, Opts) of
{some, Val@1} ->
{ok,
{<<"include"/utf8>>,
{g_list,
gleam@list:map(
Val@1,
fun(X@1) -> {g_string, X@1} end
)}}};
none ->
{error, nil}
end, case erlang:element(4, Opts) of
{some, Val@2} ->
{ok, {<<"gitignore"/utf8>>, {g_bool, Val@2}}};
none ->
{error, nil}
end, case erlang:element(5, Opts) of
{some, Val@3} ->
{ok, {<<"noCache"/utf8>>, {g_bool, Val@3}}};
none ->
{error, nil}
end], fun(X@2) -> X@2 end).
-file("src/dagger/dsl/address.gleam", 122).
?DOC(" Load a file from the address.\n").
-spec file(
dagger@dsl@types:address(),
fun((opts(directory_fns())) -> opts(directory_fns()))
) -> dagger@dsl@types:file().
file(Parent, With_fn) ->
Opts = With_fn(defaults()),
Field = {field, <<"file"/utf8>>, encode_file(Opts), []},
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/address.gleam", 133).
?DOC(" Load a git ref (branch, tag or commit) from the address.\n").
-spec git_ref(dagger@dsl@types:address()) -> dagger@dsl@types:git_ref().
git_ref(Parent) ->
Field = {field, <<"gitRef"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{git_ref, New_op}.
-file("src/dagger/dsl/address.gleam", 143).
?DOC(" Load a git repository from the address.\n").
-spec git_repository(dagger@dsl@types:address()) -> dagger@dsl@types:git_repository().
git_repository(Parent) ->
Field = {field, <<"gitRepository"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{git_repository, New_op}.
-file("src/dagger/dsl/address.gleam", 153).
?DOC(" A unique identifier for this Address.\n").
-spec id(dagger@dsl@types:address()) -> dagger@dsl@types:address().
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,
{address, New_op}.
-file("src/dagger/dsl/address.gleam", 163).
?DOC(" Load a secret from the address.\n").
-spec secret(dagger@dsl@types:address()) -> dagger@dsl@types:secret().
secret(Parent) ->
Field = {field, <<"secret"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{secret, New_op}.
-file("src/dagger/dsl/address.gleam", 173).
?DOC(" Load a service from the address.\n").
-spec service(dagger@dsl@types:address()) -> dagger@dsl@types:service().
service(Parent) ->
Field = {field, <<"service"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{service, New_op}.
-file("src/dagger/dsl/address.gleam", 183).
?DOC(" Load a local socket from the address.\n").
-spec socket(dagger@dsl@types:address()) -> dagger@dsl@types:socket().
socket(Parent) ->
Field = {field, <<"socket"/utf8>>, [], []},
New_op = begin
dagger@types:bind(
erlang:element(2, Parent),
fun(Q) -> {pure, lists:append(Q, [Field])} end
)
end,
{socket, New_op}.
-file("src/dagger/dsl/address.gleam", 193).
?DOC(" The address value\n").
-spec value(
dagger@dsl@types:address(),
dagger@types:client(),
fun(({ok, binary()} | {error, dagger@types:query_error()}) -> GDL)
) -> GDL.
value(Parent, Client, Handler) ->
Field = {field, <<"value"/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, <<"value"/utf8>>}}}
end
end}
end
)
end,
Handler(dagger@interpreter:run(Op, Client)).