-module(gleem@tasks).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gleem/tasks.gleam").
-export([define/1, run/1]).
-export_type([answer/0, task/0]).
-type answer() :: yes | no.
-type task() :: {task, binary(), binary()}.
-file("src/gleem/tasks.gleam", 18).
-spec define(list(task())) -> list(task()).
define(Tasks) ->
Tasks.
-file("src/gleem/tasks.gleam", 40).
-spec run_task(task()) -> nil.
run_task(Task) ->
gleam_stdlib:println(
<<(gleam_community@ansi:pink(<<"Initializing task: "/utf8>>))/binary,
(gleam_community@ansi:magenta(erlang:element(2, Task)))/binary>>
),
_ = gleem_ffi:cmd(<<"rm -rf tmp/"/utf8>>),
_ = gleem_ffi:cmd(<<"mkdir -p tmp/"/utf8>>),
_ = gleem_ffi:cmd(
<<"cd tmp && gleam new "/utf8, (erlang:element(2, Task))/binary>>
),
_ = gleem_ffi:cmd(<<"cp gleam.toml tmp/"/utf8>>),
_ = gleem_ffi:cmd(<<"cp -r src/build/ tmp/src/"/utf8>>),
_ = gleem_ffi:cmd(
<<<<<<"sed -i 's/^name = .*/name = \""/utf8,
(erlang:element(2, Task))/binary>>/binary,
"\"/' "/utf8>>/binary,
"tmp/gleam.toml"/utf8>>
),
_ = gleem_ffi:cmd(<<"cd tmp && gleam run"/utf8>>),
nil.
-file("src/gleem/tasks.gleam", 22).
-spec run(list(task())) -> nil.
run(Tasks) ->
case erlang:element(4, argv:load()) of
[Task_name] ->
case gleam@list:find(
Tasks,
fun(T) -> erlang:element(2, T) =:= Task_name end
) of
{ok, Task} ->
run_task(Task);
{error, _} ->
gleam_stdlib:println(
<<<<(gleam_community@ansi:red(<<"Error: "/utf8>>))/binary,
"Task not defined: "/utf8>>/binary,
(gleam_community@ansi:magenta(Task_name))/binary>>
)
end;
[] ->
gleam_stdlib:println(
<<(gleam_community@ansi:red(<<"Error: "/utf8>>))/binary,
"No task specified."/utf8>>
);
_ ->
gleam_stdlib:println(
<<(gleam_community@ansi:red(<<"Error: "/utf8>>))/binary,
"Too many arguments provided."/utf8>>
)
end.