diff --git a/src/plugins/markdown-report/md_gen.ml b/src/plugins/markdown-report/md_gen.ml index 3ddf29b5c5bec5d12ca22fe62dae3cf492a28d63..a868fb4d753d58cc8977d4c003a4dafd22c397f6 100644 --- a/src/plugins/markdown-report/md_gen.ml +++ b/src/plugins/markdown-report/md_gen.ml @@ -621,12 +621,10 @@ let gen_report ~draft:is_draft () = :: elements in let doc = Markdown.pandoc ~title ~authors elements in + let file = Mdr_params.Output.get() in try - let out = open_out (Mdr_params.Output.get()) in - let fmt = Format.formatter_of_out_channel out in - Markdown.pp_pandoc fmt doc; - close_out out + Command.print_file file (fun fmt -> Markdown.pp_pandoc fmt doc) ; + Mdr_params.result "Report %s generated" file with Sys_error s -> Mdr_params.warning - "Unable to open %s for writing (%s). No report will be generated" - (Mdr_params.Output.get()) s + "Unable to open %s for writing (%s). No report generated" file s diff --git a/src/plugins/markdown-report/sarif_gen.ml b/src/plugins/markdown-report/sarif_gen.ml index 5efe92ff894d2709acab615958b101d89ccd45c1..3a23295f21b117dc05ec53932d8c20860d1ffd5a 100644 --- a/src/plugins/markdown-report/sarif_gen.ml +++ b/src/plugins/markdown-report/sarif_gen.ml @@ -182,14 +182,14 @@ let gen_run remarks = let generate () = let remarks = get_remarks () in let runs = [ gen_run remarks ] in - let json = Schema.create ~runs () in - let out = Mdr_params.Output.get () in - let chan = - if out = "" then stdout - else begin - try open_out out - with Sys_error s -> - Mdr_params.abort "Unable to open output file %s: %s" out s - end - in - Yojson.Safe.to_channel chan (Schema.to_yojson json) + let json = Schema.create ~runs () |> Schema.to_yojson in + let file = Mdr_params.Output.get () in + if file = "" then + Log.print_on_output (fun fmt -> Yojson.Safe.pretty_print fmt json) + else + try + Command.write_file file + (fun out -> Yojson.Safe.pretty_to_channel ~std:true out json) ; + Mdr_params.result "Report %s generated" file + with Sys_error s -> + Mdr_params.abort "Unable to generate %s (%s)" file s