Extend Modules_list to handle also aliases for input and output modules, and use this to register the existing aliases. --- v2v/input_disk.ml | 2 +- v2v/modules_list.ml | 25 +++++++++++++++++++++---- v2v/modules_list.mli | 8 ++++---- v2v/output_local.ml | 2 +- v2v/output_rhev.ml | 2 +- 5 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/v2v/input_disk.ml b/v2v/input_disk.ml index 17ad61d..d21815d 100644 --- a/v2v/input_disk.ml +++ b/v2v/input_disk.ml @@ -101,4 +101,4 @@ class input_disk input_format disk = object end let input_disk = new input_disk -let () = Modules_list.register_input_module "disk" +let () = Modules_list.register_input_module ~alias:"local" "disk" diff --git a/v2v/modules_list.ml b/v2v/modules_list.ml index 36a08c0..5649b02 100644 --- a/v2v/modules_list.ml +++ b/v2v/modules_list.ml @@ -21,11 +21,28 @@ open Common_utils let input_modules = ref [] and output_modules = ref [] -let register_input_module name = push_front name input_modules -and register_output_module name = push_front name output_modules +let rec register_input_module ?alias name = register ?alias name input_modules +and register_output_module ?alias name = register ?alias name output_modules +and register ?alias name l = + push_front (name, false) l; + (match alias with + | None -> () + | Some alias -> push_front (alias, true) l + ) -let input_modules () = List.sort compare !input_modules -and output_modules () = List.sort compare !output_modules +let list_out ~with_alias l = + let l = + if with_alias then l + else + List.filter ( + fun (_, is_alias) -> + not is_alias + ) l in + let l = List.map fst l in + List.sort compare l + +let input_modules ?(with_alias = false) () = list_out ~with_alias !input_modules +and output_modules ?(with_alias = false) () = list_out ~with_alias !output_modules type conversion_fn = keep_serial_console:bool -> diff --git a/v2v/modules_list.mli b/v2v/modules_list.mli index 0560832..7f0af4b 100644 --- a/v2v/modules_list.mli +++ b/v2v/modules_list.mli @@ -18,16 +18,16 @@ (** List of input, output and conversion modules. *) -val register_input_module : string -> unit +val register_input_module : ?alias:string -> string -> unit (** Register an input module by name. *) -val register_output_module : string -> unit +val register_output_module : ?alias:string -> string -> unit (** Register an output module by name. *) -val input_modules : unit -> string list +val input_modules : ?with_alias:bool -> unit -> string list (** Return the list of input modules. *) -val output_modules : unit -> string list +val output_modules : ?with_alias:bool -> unit -> string list (** Return the list of output modules. *) type conversion_fn = diff --git a/v2v/output_local.ml b/v2v/output_local.ml index 47da929..ccd52f2 100644 --- a/v2v/output_local.ml +++ b/v2v/output_local.ml @@ -61,4 +61,4 @@ class output_local dir = object end let output_local = new output_local -let () = Modules_list.register_output_module "local" +let () = Modules_list.register_output_module ~alias:"disk" "local" diff --git a/v2v/output_rhev.ml b/v2v/output_rhev.ml index e45043b..90ac307 100644 --- a/v2v/output_rhev.ml +++ b/v2v/output_rhev.ml @@ -282,4 +282,4 @@ object end let output_rhev = new output_rhev -let () = Modules_list.register_output_module "rhev" +let () = Modules_list.register_output_module ~alias:"ovirt" "rhev" -- 2.7.4 _______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
