package dune-rpc

  1. Overview
  2. Docs
Communicate with dune using rpc

Install

dune-project
 Dependency

Authors

Maintainers

Sources

dune-3.22.0.tbz
sha256=cb816b2e672ca6c6ea680133f01287bd95a58ca611cb476acff67b8adbacf722
sha512=c99102070a9c90b29ca4cac68bd2444c086dd0ac5b63515d561087509beff719c4c534ee844f25ce391d1c08080f9e78b7dd32ed14057c6b9cc7886f60337f3b

doc/src/dune-rpc.private/version_error.ml.html

Source file version_error.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
open Import
open Types

type t =
  { payload : Csexp.t option
  ; message : string
  }

let payload t = t.payload
let message t = t.message

let to_dyn { payload; message } =
  Dyn.record
    [ "message", Dyn.string message; "payload", Dyn.(option Sexp.to_dyn) payload ]
;;

let create ?payload ~message () = { payload; message }

exception E of t

let () =
  Printexc.register_printer (function
    | E { payload; message } ->
      Some
        (let messages =
           match payload with
           | None -> []
           | Some payload -> [ Sexp.pp payload ]
         in
         Format.asprintf "%a@." Pp.to_fmt
         @@ Pp.concat
         @@ (Pp.textf "Version_error: %s" message :: messages))
    | _ -> None)
;;

let to_response_error { payload; message } =
  Response.Error.create ~kind:Invalid_request ?payload ~message ()
;;