let query_manifest file = Owee_buf.map_binary file |> Solo5_elftool.query_manifest |> Result.iter (fun mft -> Fmt.pr "%a\n" Solo5_elftool.pp_mft mft) let query_abi file = Owee_buf.map_binary file |> Solo5_elftool.query_abi |> Result.iter (Fmt.pr "%a\n" Solo5_elftool.pp_abi) let file = let doc = "Solo5 executable" in Cmdliner.Arg.(required & pos 0 (some file) None & info ~doc ~docv:"EXECUTABLE" []) let query_manifest_cmd = let doc = "query solo5 manifest" in Cmdliner.Term.( pure query_manifest $ file, info ~doc "query-manifest") let query_abi_cmd = let doc = "query solo5 abi" in Cmdliner.Term.( pure query_abi $ file, info ~doc "query-abi") let default_cmd = Cmdliner.Term.( ret (pure (fun man_format -> `Help (man_format, None)) $ man_format), info "osolo5-elftool") let () = ignore (Cmdliner.Term.eval_choice default_cmd [query_manifest_cmd; query_abi_cmd])