-module(oaspec@formatter). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/oaspec/formatter.gleam"). -export([error_to_string/1, format_files/1]). -export_type([format_error/0]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. -type format_error() :: gleam_not_found | {format_failed, integer()}. -file("src/oaspec/formatter.gleam", 26). ?DOC(" Convert a format error to a human-readable string.\n"). -spec error_to_string(format_error()) -> binary(). error_to_string(Error) -> case Error of gleam_not_found -> <<"gleam command not found in PATH. Install Gleam to format generated code."/utf8>>; {format_failed, Code} -> <<"gleam format failed with exit code "/utf8, (erlang:integer_to_binary(Code))/binary>> end. -file("src/oaspec/formatter.gleam", 12). ?DOC(" Format generated Gleam files in the given directories using `gleam format`.\n"). -spec format_files(list(binary())) -> {ok, nil} | {error, format_error()}. format_files(Dirs) -> gleam@result:'try'( begin _pipe = oaspec_ffi:find_executable(<<"gleam"/utf8>>), gleam@result:replace_error(_pipe, gleam_not_found) end, fun(Gleam_path) -> Args = gleam@list:prepend(Dirs, <<"format"/utf8>>), Exit_code = oaspec_ffi:run_executable(Gleam_path, Args), case Exit_code of 0 -> {ok, nil}; Code -> {error, {format_failed, Code}} end end ).