Packages
oaspec
0.15.0
0.68.0
0.67.0
0.66.0
0.65.0
0.64.0
0.63.0
0.62.0
0.61.0
0.60.0
0.59.0
0.58.1
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.0
0.7.0
0.6.3
0.6.1
0.6.0
0.5.0
0.4.0
0.3.0
0.1.3
Generate Gleam code from OpenAPI 3.x specifications
Current section
Files
Jump to
Current section
Files
src/oaspec/formatter.gleam
import gleam/int
import gleam/list
import gleam/result
/// Errors from formatting operations.
pub type FormatError {
GleamNotFound
FormatFailed(exit_code: Int)
}
/// Format generated Gleam files in the given directories using `gleam format`.
pub fn format_files(dirs: List(String)) -> Result(Nil, FormatError) {
use gleam_path <- result.try(
find_executable("gleam")
|> result.replace_error(GleamNotFound),
)
let args = list.prepend(dirs, "format")
let exit_code = run_executable(gleam_path, args)
case exit_code {
0 -> Ok(Nil)
code -> Error(FormatFailed(exit_code: code))
}
}
/// Convert a format error to a human-readable string.
pub fn error_to_string(error: FormatError) -> String {
case error {
GleamNotFound ->
"gleam command not found in PATH. Install Gleam to format generated code."
FormatFailed(code) ->
"gleam format failed with exit code " <> int.to_string(code)
}
}
@external(erlang, "oaspec_ffi", "find_executable")
fn find_executable(name: String) -> Result(String, Nil)
@external(erlang, "oaspec_ffi", "run_executable")
fn run_executable(executable: String, args: List(String)) -> Int