From d410b6f5d8a887a6ec57cef85602d25d4e928602 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr> Date: Fri, 25 Oct 2019 12:42:30 +0200 Subject: [PATCH] [mdr] more verbose & robustified channel closing --- src/plugins/markdown-report/md_gen.ml | 10 ++++------ src/plugins/markdown-report/sarif_gen.ml | 22 +++++++++++----------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/plugins/markdown-report/md_gen.ml b/src/plugins/markdown-report/md_gen.ml index 3ddf29b5c5b..a868fb4d753 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 5efe92ff894..3a23295f21b 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 -- GitLab