From 49b3f20875457969205d294786cfd01b4a3d6e26 Mon Sep 17 00:00:00 2001 From: Allan Blanchard <allan.blanchard@cea.fr> Date: Tue, 23 Jul 2024 08:48:43 +0200 Subject: [PATCH] [kernel] more conventional option creation for directories --- .../cmdline_parameters/parameter_builder.ml | 17 ++++++----------- .../cmdline_parameters/parameter_sig.ml | 8 +++----- .../misc/user_directories.unix.t/directories.ml | 12 ++++++++---- 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/src/kernel_services/cmdline_parameters/parameter_builder.ml b/src/kernel_services/cmdline_parameters/parameter_builder.ml index 22ea00848f..f8e95e6cd3 100644 --- a/src/kernel_services/cmdline_parameters/parameter_builder.ml +++ b/src/kernel_services/cmdline_parameters/parameter_builder.ml @@ -577,21 +577,16 @@ struct module Make_user_dir_opt (Parent: Parameter_sig.User_dir) (Info: sig - val name: string + include Parameter_sig.Input_with_arg val env: string option - val help: string + val dirname: string end): Parameter_sig.User_dir_opt = struct - let is_kernel = P.shortname = "" - let prefix = "-" ^ (if is_kernel then "" else P.shortname ^ "-") - module Dir_name = Filepath (struct - let option_name = prefix ^ Info.name - let arg_name = "dir" - let help = Info.help + include Info let existence = Fc_Filepath.Indifferent let file_kind = "" end) @@ -601,7 +596,7 @@ struct else match Option.bind Info.env Sys.getenv_opt with | Some s when s <> "" -> Fc_Filepath.Normalized.of_string s - | _ -> Parent.get_dir Info.name + | _ -> Parent.get_dir Info.dirname let set = Dir_name.set let is_set = Dir_name.is_set @@ -611,11 +606,11 @@ struct try if Extlib.mkdir ~parents:true d' 0o755 then P.L.warning "created %s directory `%a'" - Info.name Fc_Filepath.Normalized.pretty d'; + Info.dirname Fc_Filepath.Normalized.pretty d'; d with Unix.Unix_error _ -> P.L.abort "cannot create %s directory `%a'" - Info.name Fc_Filepath.Normalized.pretty d' + Info.dirname Fc_Filepath.Normalized.pretty d' let get_dir ?(create_path=false) name = let dir = Datatype.Filepath.concat (get ()) name in diff --git a/src/kernel_services/cmdline_parameters/parameter_sig.ml b/src/kernel_services/cmdline_parameters/parameter_sig.ml index 68162ec684..6d04fc0d81 100644 --- a/src/kernel_services/cmdline_parameters/parameter_sig.ml +++ b/src/kernel_services/cmdline_parameters/parameter_sig.ml @@ -661,16 +661,14 @@ module type Builder = sig module Make_user_dir_opt (_: User_dir) (_: sig - val name: string - (** The name of the directory, also used to create an option of the - form -<plugin>-<name>. *) - + include Input_with_arg val env: string option (** Can be used to provide an environment variable that can be used instead of the option. The option has higher priority. *) - val help: string + val dirname: string + (** The name of the directory *) end): User_dir_opt (** Allow using custom types as parameters. diff --git a/tests/misc/user_directories.unix.t/directories.ml b/tests/misc/user_directories.unix.t/directories.ml index d4eba52b5e..e9b949fdf8 100644 --- a/tests/misc/user_directories.unix.t/directories.ml +++ b/tests/misc/user_directories.unix.t/directories.ml @@ -22,18 +22,22 @@ module Sub_cache_opt_no_var = Self.Make_user_dir_opt (Cache) (struct - let name = "optnovar" - let env = None + let option_name = "-dirs-opt-no-var" + let arg_name = "dir" let help = "" + let env = None + let dirname = "optnovar" end) module Sub_cache_opt_var = Self.Make_user_dir_opt (Cache) (struct - let name = "optvar" - let env = Some "FRAMAC_DIRS_VAR" + let option_name = "-dirs-optvar" + let arg_name = "dir" let help = "" + let env = Some "FRAMAC_DIRS_VAR" + let dirname = "optvar" end) module Config = Self.Config_dir () -- GitLab