-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.