Current section

Files

Jump to
gleam_erlang src gleam@erlang@file.erl
Raw

src/gleam@erlang@file.erl

-module(gleam@erlang@file).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]).
-export([file_info/1, link_info/1, is_directory/1, is_regular/1, file_exists/1, link_exists/1, make_directory/1, list_directory/1, delete_directory/1, recursive_delete/1, read/1, read_bits/1, write/2, write_bits/2, append/2, append_bits/2, delete/1]).
-export_type([reason/0, file_type/0, access/0, file_info/0]).
-type reason() :: eacces |
eagain |
ebadf |
ebadmsg |
ebusy |
edeadlk |
edeadlock |
edquot |
eexist |
efault |
efbig |
eftype |
eintr |
einval |
eio |
eisdir |
eloop |
emfile |
emlink |
emultihop |
enametoolong |
enfile |
enobufs |
enodev |
enolck |
enolink |
enoent |
enomem |
enospc |
enosr |
enostr |
enosys |
enotblk |
enotdir |
enotsup |
enxio |
eopnotsupp |
eoverflow |
eperm |
epipe |
erange |
erofs |
espipe |
esrch |
estale |
etxtbsy |
exdev |
not_utf8.
-type file_type() :: device | directory | other | regular | symlink.
-type access() :: no_access | read | read_write | write.
-type file_info() :: {file_info,
integer(),
file_type(),
access(),
integer(),
integer(),
integer(),
integer(),
integer(),
integer(),
integer(),
integer(),
integer(),
integer()}.
-spec file_info(binary()) -> {ok, file_info()} | {error, reason()}.
file_info(A) ->
gleam_erlang_ffi:file_info(A).
-spec link_info(binary()) -> {ok, file_info()} | {error, reason()}.
link_info(A) ->
gleam_erlang_ffi:link_info(A).
-spec is_directory(binary()) -> {ok, boolean()} | {error, reason()}.
is_directory(Path) ->
gleam@result:map(
gleam_erlang_ffi:file_info(Path),
fun(_use0) ->
{file_info, _, File_type, _, _, _, _, _, _, _, _, _, _, _} = _use0,
File_type =:= directory
end
).
-spec is_regular(binary()) -> {ok, boolean()} | {error, reason()}.
is_regular(Path) ->
gleam@result:map(
gleam_erlang_ffi:file_info(Path),
fun(_use0) ->
{file_info, _, File_type, _, _, _, _, _, _, _, _, _, _, _} = _use0,
File_type =:= regular
end
).
-spec file_exists(binary()) -> {ok, boolean()} | {error, reason()}.
file_exists(Path) ->
Result = begin
_pipe = Path,
_pipe@1 = gleam_erlang_ffi:file_info(_pipe),
gleam@result:replace(_pipe@1, true)
end,
case Result of
{error, enoent} ->
{ok, false};
_ ->
Result
end.
-spec link_exists(binary()) -> {ok, boolean()} | {error, reason()}.
link_exists(Path) ->
Result = begin
_pipe = Path,
_pipe@1 = gleam_erlang_ffi:link_info(_pipe),
gleam@result:replace(_pipe@1, true)
end,
case Result of
{error, enoent} ->
{ok, false};
_ ->
Result
end.
-spec make_directory(binary()) -> {ok, nil} | {error, reason()}.
make_directory(A) ->
gleam_erlang_ffi:make_directory(A).
-spec list_directory(binary()) -> {ok, list(binary())} | {error, reason()}.
list_directory(A) ->
gleam_erlang_ffi:list_directory(A).
-spec delete_directory(binary()) -> {ok, nil} | {error, reason()}.
delete_directory(A) ->
gleam_erlang_ffi:delete_directory(A).
-spec recursive_delete(binary()) -> {ok, nil} | {error, reason()}.
recursive_delete(A) ->
gleam_erlang_ffi:recursive_delete(A).
-spec read(binary()) -> {ok, binary()} | {error, reason()}.
read(Path) ->
_pipe = Path,
_pipe@1 = gleam_erlang_ffi:read_file(_pipe),
gleam@result:then(
_pipe@1,
fun(Content) -> case gleam@bit_array:to_string(Content) of
{ok, String} ->
{ok, String};
{error, nil} ->
{error, not_utf8}
end end
).
-spec read_bits(binary()) -> {ok, bitstring()} | {error, reason()}.
read_bits(Path) ->
gleam_erlang_ffi:read_file(Path).
-spec write(binary(), binary()) -> {ok, nil} | {error, reason()}.
write(Contents, Path) ->
_pipe = Contents,
_pipe@1 = gleam_stdlib:identity(_pipe),
gleam_erlang_ffi:write_file(_pipe@1, Path).
-spec write_bits(bitstring(), binary()) -> {ok, nil} | {error, reason()}.
write_bits(Contents, Path) ->
gleam_erlang_ffi:write_file(Contents, Path).
-spec append(binary(), binary()) -> {ok, nil} | {error, reason()}.
append(Contents, Path) ->
_pipe = Contents,
_pipe@1 = gleam_stdlib:identity(_pipe),
gleam_erlang_ffi:append_file(_pipe@1, Path).
-spec append_bits(bitstring(), binary()) -> {ok, nil} | {error, reason()}.
append_bits(Contents, Path) ->
gleam_erlang_ffi:append_file(Contents, Path).
-spec delete(binary()) -> {ok, nil} | {error, reason()}.
delete(A) ->
gleam_erlang_ffi:delete_file(A).