Source file repo_id.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
type t = {
  owner : string;
  name : string;
}

let pp f { owner; name } = Fmt.pf f "%s/%s" owner name

let compare = compare

let cmdliner =
  let open Cmdliner in
  let parse s =
    match Astring.String.cuts ~sep:"/" s with
    | [ owner; name] -> Ok { owner; name }
    | _ -> Fmt.error_msg "%S not in the form 'owner/name'" s
  in
  Arg.conv ~docv:"REPO" (parse, pp)