defmodule Zig.CompileError do defexception [:command, :code, :error] def message(error) do "zig command failed: #{error.command} failed with error #{error.code}: #{error.error}" end alias Zig.Manifest def to_error(error, opts) do [location_info, error_msg | _] = error.error |> String.split("\nerror:") |> List.first() |> String.split(": error: ") manifest = Keyword.fetch!(opts, :manifest) [file, line, _column] = String.split(location_info, ":") {resolved_file, resolved_line} = Manifest.resolve(manifest, file, String.to_integer(line)) %CompileError{description: error_msg, file: resolved_file, line: resolved_line} end end