let pp_summary ?(pp=default_pp) () fmt result =
let l =
ResultHash.fold (fun k v acc ->
let l1 = Util.list_unique !v in
begin match k with
|Conflict(_,_,_) -> result.unique_conflict <- result.unique_conflict + 1;
|Missing(_,_) -> result.unique_missing <- result.unique_missing +1;
|_ -> ()
end;
if List.length l1 > 1 then (k,l1)::acc else acc
) result.summary []
in
let l = List.sort ~cmp:(fun (_,l1) (_,l2) -> (List.length l1) - (List.length l2)) l in
Format.fprintf fmt "@[";
Format.fprintf fmt "missing-packages: %d@." result.missing;
Format.fprintf fmt "conflict-packages: %d@." result.conflict;
Format.fprintf fmt "unique-missing-packages: %d@." result.unique_missing;
Format.fprintf fmt "unique-conflict-packages: %d@." result.unique_conflict;
Format.fprintf fmt "@]";
Format.fprintf fmt "@[<v 1>summary:@," ;
pp_list (pp_summary_row pp) fmt l;
Format.fprintf fmt "@]"