Current section
Files
Jump to
Current section
Files
src/lustre_dev_tools@packages.erl
-module(lustre_dev_tools@packages).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([install/1]).
-spec dev_flag(binary()) -> binary().
dev_flag(Pm) ->
case Pm of
<<"yarn"/utf8>> ->
<<"--dev"/utf8>>;
<<"bun"/utf8>> ->
<<"--dev"/utf8>>;
_ ->
<<"--save-dev"/utf8>>
end.
-spec install_command(binary()) -> binary().
install_command(Pm) ->
case Pm of
<<"yarn"/utf8>> ->
<<"add"/utf8>>;
_ ->
<<"install"/utf8>>
end.
-spec do_install(binary(), binary(), list(binary()), list(binary())) -> lustre_dev_tools@cli:cli(nil).
do_install(Pm, Root, Dependencies, Dev_dependencies) ->
Install_dev_result = begin
_pipe = lustre_dev_tools_ffi:exec(
Pm,
[install_command(Pm), dev_flag(Pm) | Dev_dependencies],
Root
),
gleam@result:map_error(
_pipe,
fun(Pair) ->
{package_installation_error, erlang:element(2, Pair), Pm}
end
)
end,
lustre_dev_tools@cli:'try'(
Install_dev_result,
fun(_) ->
Install_result = begin
_pipe@1 = lustre_dev_tools_ffi:exec(
Pm,
[install_command(Pm) | Dependencies],
Root
),
gleam@result:map_error(
_pipe@1,
fun(Pair@1) ->
{package_installation_error,
erlang:element(2, Pair@1),
Pm}
end
)
end,
lustre_dev_tools@cli:'try'(
Install_result,
fun(_) ->
lustre_dev_tools@cli:success(
<<"Dependencies installed!"/utf8>>,
fun() -> lustre_dev_tools@cli:return(nil) end
)
end
)
end
).
-spec install(binary()) -> lustre_dev_tools@cli:cli(nil).
install(Pm) ->
lustre_dev_tools@cli:log(
<<"Installing JavaScript packages"/utf8>>,
fun() ->
Root = lustre_dev_tools@project:root(),
case lustre_dev_tools@project:all_node_modules_installed() of
true ->
lustre_dev_tools@cli:success(
<<"All packages already installed!"/utf8>>,
fun() -> lustre_dev_tools@cli:return(nil) end
);
false ->
Pm@1 = case Pm of
<<""/utf8>> ->
lustre_dev_tools@project:used_package_manager();
_ ->
Pm
end,
do_install(
Pm@1,
Root,
[<<"quill"/utf8>>, <<"tailwind-merge"/utf8>>],
[<<"jsdom"/utf8>>]
)
end
end
).