diff options
author | Hayleigh Thompson <me@hayleigh.dev> | 2024-03-22 01:42:26 +0000 |
---|---|---|
committer | Hayleigh Thompson <me@hayleigh.dev> | 2024-03-22 01:42:26 +0000 |
commit | e85bc4729a15d9af5af5345151178afe849036ba (patch) | |
tree | cc229a534fff73b6cd0c1ea4b290a12cedb7aa08 /src/cli_ffi.erl | |
parent | e9b765a757b610ea970f80e7c0092bf4899acfa6 (diff) | |
download | lustre-e85bc4729a15d9af5af5345151178afe849036ba.tar.gz lustre-e85bc4729a15d9af5af5345151178afe849036ba.zip |
:truck: Move cli code to lustre-labs/dev-tools.
Diffstat (limited to 'src/cli_ffi.erl')
-rw-r--r-- | src/cli_ffi.erl | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/src/cli_ffi.erl b/src/cli_ffi.erl deleted file mode 100644 index 43e9c78..0000000 --- a/src/cli_ffi.erl +++ /dev/null @@ -1,87 +0,0 @@ --module(cli_ffi). --export([ - get_cpu/0, - get_esbuild/1, - get_tailwind/1, - get_os/0, - unzip_esbuild/1, - exec/3 -]). - -get_os() -> - case os:type() of - {win32, _} -> <<"win32">>; - {unix, darwin} -> <<"darwin">>; - {unix, linux} -> <<"linux">>; - {_, Unknown} -> atom_to_binary(Unknown, utf8) - end. - -get_cpu() -> - case erlang:system_info(os_type) of - {unix, _} -> - [Arch, _] = string:split(erlang:system_info(system_architecture), "-"), - list_to_binary(Arch); - {win32, _} -> - case erlang:system_info(wordsize) of - 4 -> {ok, <<"ia32">>}; - 8 -> {ok, <<"x64">>} - end - end. - -get_esbuild(Url) -> - inets:start(), - ssl:start(), - - case httpc:request(get, {Url, []}, [], [{body_format, binary}]) of - {ok, {{_, 200, _}, _, Zip}} -> {ok, Zip}; - {ok, Res} -> {error, Res}; - {error, Err} -> {error, Err} - end. - -get_tailwind(Url) -> - inets:start(), - ssl:start(), - - case httpc:request(get, {Url, []}, [], [{body_format, binary}]) of - {ok, {{_, 200, _}, _, Bin}} -> {ok, Bin}; - {ok, Res} -> {error, Res}; - {error, Err} -> {error, Err} - end. - - -unzip_esbuild(Zip) -> - Result = - erl_tar:extract({binary, Zip}, [ - memory, compressed, {files, ["package/bin/esbuild"]} - ]), - - case Result of - {ok, [{_, Esbuild}]} -> {ok, Esbuild}; - {ok, Res} -> {error, Res}; - {error, Err} -> {error, Err} - end. - -exec(Command, Args, Cwd) -> - Command_ = binary_to_list(Command), - Args_ = lists:map(fun(Arg) -> binary_to_list(Arg) end, Args), - Cwd_ = binary_to_list(Cwd), - - Name = case Command_ of - "./" ++ _ -> {spawn_executable, Command_}; - "/" ++ _ -> {spawn_executable, Command_}; - _ -> {spawn_executable, os:find_executable(Command_)} - end, - - Port = open_port(Name, [exit_status, binary, hide, stream, eof, - {args, Args_}, - {cd, Cwd_} - ]), - - do_exec(Port, []). - -do_exec(Port, Acc) -> - receive - {Port, {data, Data}} -> do_exec(Port, [Data | Acc]); - {Port, {exit_status, 0}} -> {ok, list_to_binary(lists:reverse(Acc))}; - {Port, {exit_status, Code}} -> {error, {Code, list_to_binary(lists:reverse(Acc))}} - end. |