From c81c40281db4e7ad12eef2b7bb1872f2b4b6b2bf Mon Sep 17 00:00:00 2001 From: Valentin Perrelle <valentin.perrelle@cea.fr> Date: Tue, 6 Oct 2020 15:31:45 +0200 Subject: [PATCH] [kernel] allow -dump-config to also dump the list of options and values --- src/kernel_internals/runtime/dump_config.ml | 24 ++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/kernel_internals/runtime/dump_config.ml b/src/kernel_internals/runtime/dump_config.ml index c97a98ca8f6..fa0c4ed1d51 100644 --- a/src/kernel_internals/runtime/dump_config.ml +++ b/src/kernel_internals/runtime/dump_config.ml @@ -20,6 +20,26 @@ (* *) (**************************************************************************) +let list_plugins_names () = + Plugin.fold_on_plugins (fun p acc -> p.Plugin.p_name :: acc) [] + +let dump_parameter tp = + let open Typed_parameter in + let json_value = match tp.accessor with + | Bool (accessor,_) -> `Bool (accessor.get ()) + | Int (accessor,_) -> `Int (accessor.get ()) + | String (accessor,_) -> `String (accessor.get ()) + in + tp.name, json_value + +let dump_all_parameters () = + let add_category _ l acc = + List.fold_left (fun acc tp -> dump_parameter tp :: acc) acc l + in + let add_plugin plugin acc = + Hashtbl.fold add_category plugin.Plugin.p_parameters acc + in + Plugin.fold_on_plugins add_plugin [] let dump_to_json () = let string s = `String s in @@ -50,7 +70,9 @@ let dump_to_json () = "preprocessor_keep_comments", `Bool Fc_config.preprocessor_keep_comments ; "dot", (match Fc_config.dot with Some cmd -> `String cmd | None -> `Null) ; "current_machdep", `String (Kernel.Machdep.get ()) ; - "machdeps", list string (File.list_available_machdeps ()) + "machdeps", list string (File.list_available_machdeps ()) ; + "plugins", list string (list_plugins_names ()) ; + "parameters", `Assoc (dump_all_parameters ()) ; ] let dump_to_stdout () = -- GitLab