Skip to main content

src/oaisp@internal@atomic_write.erl

-module(oaisp@internal@atomic_write).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/oaisp/internal/atomic_write.gleam").
-export([write/2]).

-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.

?MODULEDOC(false).

-file("src/oaisp/internal/atomic_write.gleam", 10).
?DOC(false).
-spec write(binary(), binary()) -> {ok, nil} | {error, binary()}.
write(Path, Contents) ->
    Temp = <<Path/binary, ".oaisp.tmp"/utf8>>,
    gleam@result:'try'(
        oaisp@internal@fs:write(Temp, Contents),
        fun(_) -> oaisp@internal@fs:rename(Temp, Path) end
    ).