Pino Toscano
2018-Aug-20 15:29 UTC
[Libguestfs] [PATCH 1/2] mlstdutils/mltools: factorize the machine-readable option
Store the machine-readable flag globally, just like done for
verbose/debug/etc, and enhance create_standard_options to provide
--machine-readable automatically.
---
common/mlstdutils/std_utils.ml | 4 ++++
common/mlstdutils/std_utils.mli | 7 +++++--
common/mltools/tools_utils.ml | 7 ++++++-
common/mltools/tools_utils.mli | 5 ++++-
4 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/common/mlstdutils/std_utils.ml b/common/mlstdutils/std_utils.ml
index df443058f..6499b3535 100644
--- a/common/mlstdutils/std_utils.ml
+++ b/common/mlstdutils/std_utils.ml
@@ -645,6 +645,10 @@ let verbose = ref false
let set_verbose () = verbose := true
let verbose () = !verbose
+let machine_readable = ref false
+let set_machine_readable () = machine_readable := true
+let machine_readable () = !machine_readable
+
let with_open_in filename f let chan = open_in filename in
protect ~f:(fun () -> f chan) ~finally:(fun () -> close_in chan)
diff --git a/common/mlstdutils/std_utils.mli b/common/mlstdutils/std_utils.mli
index c887249a5..cb72fef7d 100644
--- a/common/mlstdutils/std_utils.mli
+++ b/common/mlstdutils/std_utils.mli
@@ -374,8 +374,11 @@ val set_trace : unit -> unit
val trace : unit -> bool
val set_verbose : unit -> unit
val verbose : unit -> bool
-(** Stores the colours ([--colours]), quiet ([--quiet]), trace ([-x])
- and verbose ([-v]) flags in global variables. *)
+val set_machine_readable : unit -> unit
+val machine_readable : unit -> bool
+(** Stores the colours ([--colours]), quiet ([--quiet]), trace ([-x]),
+ verbose ([-v]), and machine readable ([--machine-readable]) flags
+ in global variables. *)
val with_open_in : string -> (in_channel -> 'a) -> 'a
(** [with_open_in filename f] calls function [f] with [filename]
diff --git a/common/mltools/tools_utils.ml b/common/mltools/tools_utils.ml
index 09f1bb544..04916b89a 100644
--- a/common/mltools/tools_utils.ml
+++ b/common/mltools/tools_utils.ml
@@ -229,7 +229,7 @@ let human_size i )
)
-let create_standard_options argspec ?anon_fun ?(key_opts = false) usage_msg
+let create_standard_options argspec ?anon_fun ?(key_opts = false)
?(machine_readable = false) usage_msg (** Install an exit hook to check gc
consistency for --debug-gc *)
let set_debug_gc () at_exit (fun () -> Gc.compact()) in
@@ -249,6 +249,11 @@ let create_standard_options argspec ?anon_fun ?(key_opts =
false) usage_msg [ L"echo-keys" ], Getopt.Unit
c_set_echo_keys, s_"Don’t turn off echo for passphrases";
[ L"keys-from-stdin" ], Getopt.Unit c_set_keys_from_stdin,
s_"Read passphrases from stdin";
]
+ else []) @
+ (if machine_readable then
+ [
+ [ L"machine-readable" ], Getopt.Unit set_machine_readable,
s_"Make output machine readable";
+ ]
else []) in
Getopt.create argspec ?anon_fun usage_msg
diff --git a/common/mltools/tools_utils.mli b/common/mltools/tools_utils.mli
index dac6b4120..44fd20be3 100644
--- a/common/mltools/tools_utils.mli
+++ b/common/mltools/tools_utils.mli
@@ -64,13 +64,16 @@ val parse_resize : int64 -> string -> int64
val human_size : int64 -> string
(** Converts a size in bytes to a human-readable string. *)
-val create_standard_options : Getopt.speclist -> ?anon_fun:Getopt.anon_fun
-> ?key_opts:bool -> Getopt.usage_msg -> Getopt.t
+val create_standard_options : Getopt.speclist -> ?anon_fun:Getopt.anon_fun
-> ?key_opts:bool -> ?machine_readable:bool -> Getopt.usage_msg ->
Getopt.t
(** Adds the standard libguestfs command line options to the specified ones,
sorting them, and setting [long_options] to them.
[key_opts] specifies whether add the standard options related to
keys management, i.e. [--echo-keys] and [--keys-from-stdin].
+ [machine_readable] specifies whether add the [--machine-readable]
+ option.
+
Returns a new [Getopt.t] handle. *)
val external_command : ?echo_cmd:bool -> string -> string list
--
2.17.1
Pino Toscano
2018-Aug-20 15:29 UTC
[Libguestfs] [PATCH 2/2] OCaml tools: simplify machine-readable handling
Make use of the helper provided by Tools_utils.create_standard_options,
so there is no need to implement the logic in each tool.
This affects all the OCaml tools with --machine-readable, namely:
virt-builder, virt-builder-repository, virt-dib, virt-get-kernel,
virt-resize, virt-sparsify, and virt-v2v.
---
builder/cmdline.ml | 8 ++------
builder/repository_main.ml | 6 ++----
dib/cmdline.ml | 8 ++------
get-kernel/get_kernel.ml | 6 ++----
resize/resize.ml | 15 ++++++---------
sparsify/cmdline.ml | 9 ++-------
sparsify/cmdline.mli | 1 -
sparsify/copying.ml | 4 ++--
sparsify/copying.mli | 2 +-
sparsify/in_place.ml | 4 ++--
sparsify/in_place.mli | 2 +-
sparsify/sparsify.ml | 6 ++----
v2v/cmdline.ml | 8 ++------
13 files changed, 26 insertions(+), 53 deletions(-)
diff --git a/builder/cmdline.ml b/builder/cmdline.ml
index fa8a83d3e..9c854ed49 100644
--- a/builder/cmdline.ml
+++ b/builder/cmdline.ml
@@ -104,8 +104,6 @@ let parse_cmdline () * Getopt handling of Symbol. *)
list_format := List_entries.list_format_of_string arg in
- let machine_readable = ref false in
-
let memsize = ref None in
let set_memsize arg = memsize := Some arg in
@@ -155,7 +153,6 @@ let parse_cmdline () [ L"long" ],
Getopt.Unit list_set_long, s_"Shortcut for --list-format long";
[ L"list-format" ], Getopt.Symbol (formats_string, formats,
list_set_format),
s_"Set the format for --list
(default: short)";
- [ L"machine-readable" ], Getopt.Set machine_readable,
s_"Make output machine readable";
[ S 'm'; L"memsize" ], Getopt.Int ("mb",
set_memsize), s_"Set memory size";
[ L"network" ], Getopt.Set network, s_"Enable
appliance network (default)";
[ L"no-network" ], Getopt.Clear network, s_"Disable
appliance network";
@@ -193,7 +190,7 @@ A short summary of the options is given below. For detailed
help please
read the man page virt-builder(1).
")
prog in
- let opthandle = create_standard_options argspec ~anon_fun usage_msg in
+ let opthandle = create_standard_options argspec ~anon_fun
~machine_readable:true usage_msg in
Getopt.parse opthandle;
(* Dereference options. *)
@@ -209,7 +206,6 @@ read the man page virt-builder(1).
let format = match !format with "" -> None | s -> Some s in
let gpg = !gpg in
let list_format = !list_format in
- let machine_readable = !machine_readable in
let memsize = !memsize in
let network = !network in
let ops = get_customize_ops () in
@@ -221,7 +217,7 @@ read the man page virt-builder(1).
let warn_if_partition = !warn_if_partition in
(* No arguments and machine-readable mode? Print some facts. *)
- if args = [] && machine_readable then (
+ if args = [] && machine_readable () then (
printf "virt-builder\n";
printf "arch\n";
printf "config-file\n";
diff --git a/builder/repository_main.ml b/builder/repository_main.ml
index 5dc4d57cd..0b2b917f4 100644
--- a/builder/repository_main.ml
+++ b/builder/repository_main.ml
@@ -47,7 +47,6 @@ let parse_cmdline ()
let interactive = ref false in
let compression = ref true in
- let machine_readable = ref false in
let argspec = [
[ L"gpg" ], Getopt.Set_string ("gpg", gpg), s_"Set
GPG binary/command";
@@ -55,7 +54,6 @@ let parse_cmdline () s_"ID of the GPG key to sign
the repo with";
[ S 'i'; L"interactive" ], Getopt.Set interactive,
s_"Ask the user about missing data";
[ L"no-compression" ], Getopt.Clear compression, s_"Don’t
compress the new images in the index";
- [ L"machine-readable" ], Getopt.Set machine_readable,
s_"Make output machine readable";
] in
let args = ref [] in
@@ -70,13 +68,13 @@ A short summary of the options is given below. For detailed
help please
read the man page virt-builder-repository(1).
")
prog in
- let opthandle = create_standard_options argspec ~anon_fun usage_msg in
+ let opthandle = create_standard_options argspec ~anon_fun
~machine_readable:true usage_msg in
Getopt.parse opthandle;
(* Machine-readable mode? Print out some facts about what
* this binary supports.
*)
- if !machine_readable then (
+ if machine_readable () then (
printf "virt-builder-repository\n";
exit 0
);
diff --git a/dib/cmdline.ml b/dib/cmdline.ml
index d013a181e..f5e8ec9cb 100644
--- a/dib/cmdline.ml
+++ b/dib/cmdline.ml
@@ -145,8 +145,6 @@ read the man page virt-dib(1).
let mkfs_options = ref None in
let set_mkfs_options arg = mkfs_options := Some arg in
- let machine_readable = ref false in
-
let extra_packages = ref [] in
let append_extra_packages arg List.push_front_list (List.rev
(String.nsplit "," arg)) extra_packages in
@@ -191,14 +189,13 @@ read the man page virt-dib(1).
[ L"smp" ], Getopt.Int ("vcpus", set_smp),
s_"Set number of vCPUs";
[ L"no-delete-on-failure" ], Getopt.Clear delete_on_failure,
s_"Don’t delete output file
on failure";
- [ L"machine-readable" ], Getopt.Set machine_readable,
s_"Make output machine readable";
[ L"debug" ], Getopt.Int ("level", set_debug),
s_"Set debug level";
[ S 'B' ], Getopt.Set_string ("path",
basepath), s_"Base path of diskimage-builder library";
] in
let argspec = argspec @ Output_format.extra_args () in
- let opthandle = create_standard_options argspec ~anon_fun:append_element
usage_msg in
+ let opthandle = create_standard_options argspec ~anon_fun:append_element
~machine_readable:true usage_msg in
Getopt.parse opthandle;
let debug = !debug in
@@ -226,13 +223,12 @@ read the man page virt-dib(1).
let is_ramdisk = !is_ramdisk in
let ramdisk_element = !ramdisk_element in
let mkfs_options = !mkfs_options in
- let machine_readable = !machine_readable in
let extra_packages = List.rev !extra_packages in
let checksum = !checksum in
let python = !python in
(* No elements and machine-readable mode? Print some facts. *)
- if elements = [] && machine_readable then (
+ if elements = [] && machine_readable () then (
printf "virt-dib\n";
let formats_list = Output_format.list_formats () in
List.iter (printf "output:%s\n") formats_list;
diff --git a/get-kernel/get_kernel.ml b/get-kernel/get_kernel.ml
index fca8a06db..f2949da89 100644
--- a/get-kernel/get_kernel.ml
+++ b/get-kernel/get_kernel.ml
@@ -31,7 +31,6 @@ let parse_cmdline () let libvirturi = ref "" in
let format = ref "auto" in
let output = ref "" in
- let machine_readable = ref false in
let unversioned = ref false in
let prefix = ref None in
@@ -57,7 +56,6 @@ let parse_cmdline () [ S 'c';
L"connect" ], Getopt.Set_string (s_"uri",
libvirturi), s_"Set libvirt URI";
[ S 'd'; L"domain" ], Getopt.String
(s_"domain", set_domain), s_"Set libvirt guest name";
[ L"format" ], Getopt.Set_string (s_"format", format),
s_"Format of input disk";
- [ L"machine-readable" ], Getopt.Set machine_readable,
s_"Make output machine readable";
[ S 'o'; L"output" ], Getopt.Set_string
(s_"directory", output), s_"Output directory";
[ L"unversioned-names" ], Getopt.Set unversioned,
s_"Use unversioned names for
files";
@@ -71,13 +69,13 @@ A short summary of the options is given below. For detailed
help please
read the man page virt-get-kernel(1).
")
prog in
- let opthandle = create_standard_options argspec ~key_opts:true usage_msg in
+ let opthandle = create_standard_options argspec ~key_opts:true
~machine_readable:true usage_msg in
Getopt.parse opthandle;
(* Machine-readable mode? Print out some facts about what
* this binary supports.
*)
- if !machine_readable then (
+ if machine_readable () then (
printf "virt-get-kernel\n";
exit 0
);
diff --git a/resize/resize.ml b/resize/resize.ml
index 174f1c699..9d2fdaf40 100644
--- a/resize/resize.ml
+++ b/resize/resize.ml
@@ -157,7 +157,7 @@ let main () let infile, outfile, align_first, alignment,
copy_boot_loader,
deletes,
dryrun, expand, expand_content, extra_partition, format, ignores,
- lv_expands, machine_readable, ntfsresize_force, output_format,
+ lv_expands, ntfsresize_force, output_format,
resizes, resizes_force, shrink, sparse, unknown_fs_mode
let add xs s = List.push_front s xs in
@@ -178,7 +178,6 @@ let main () let format = ref "" in
let ignores = ref [] in
let lv_expands = ref [] in
- let machine_readable = ref false in
let ntfsresize_force = ref false in
let output_format = ref "" in
let resizes = ref [] in
@@ -204,7 +203,6 @@ let main () [ L"format" ],
Getopt.Set_string (s_"format", format), s_"Format of input
disk";
[ L"ignore" ], Getopt.String (s_"part", add
ignores), s_"Ignore partition";
[ L"lv-expand"; L"LV-expand"; L"lvexpand";
L"LVexpand" ], Getopt.String (s_"lv", add lv_expands),
s_"Expand logical volume";
- [ L"machine-readable" ], Getopt.Set machine_readable,
s_"Make output machine readable";
[ S 'n'; L"dry-run"; L"dryrun" ],
Getopt.Set dryrun, s_"Don’t perform changes";
[ L"ntfsresize-force" ], Getopt.Set ntfsresize_force,
s_"Force ntfsresize";
[ L"output-format" ], Getopt.Set_string (s_"format",
output_format), s_"Format of output disk";
@@ -225,7 +223,7 @@ A short summary of the options is given below. For detailed
help please
read the man page virt-resize(1).
")
prog in
- let opthandle = create_standard_options argspec ~anon_fun usage_msg in
+ let opthandle = create_standard_options argspec ~anon_fun
~machine_readable:true usage_msg in
Getopt.parse opthandle;
if verbose () then (
@@ -245,7 +243,6 @@ read the man page virt-resize(1).
let format = match !format with "" -> None | str -> Some
str in
let ignores = List.rev !ignores in
let lv_expands = List.rev !lv_expands in
- let machine_readable = !machine_readable in
let ntfsresize_force = !ntfsresize_force in
let output_format = match !output_format with "" -> None | str
-> Some str in
let resizes = List.rev !resizes in
@@ -279,7 +276,7 @@ read the man page virt-resize(1).
* things added since this option, or things which depend on features
* of the appliance.
*)
- if !disks = [] && machine_readable then (
+ if !disks = [] && machine_readable () then (
printf "virt-resize\n";
printf "ntfsresize-force\n";
printf "32bitok\n";
@@ -331,7 +328,7 @@ read the man page virt-resize(1).
infile, outfile, align_first, alignment, copy_boot_loader,
deletes,
dryrun, expand, expand_content, extra_partition, format, ignores,
- lv_expands, machine_readable, ntfsresize_force, output_format,
+ lv_expands, ntfsresize_force, output_format,
resizes, resizes_force, shrink, sparse, unknown_fs_mode in
(* Default to true, since NTFS/btrfs/XFS/f2fs support are usually available.
*)
@@ -356,7 +353,7 @@ read the man page virt-resize(1).
(* The output disk is being created, so use cache=unsafe here. *)
add_drive_uri g ?format:output_format ~readonly:false
~cachemode:"unsafe"
(snd outfile);
- if not (quiet ()) then Progress.set_up_progress_bar ~machine_readable g;
+ if not (quiet ()) then Progress.set_up_progress_bar
~machine_readable:(machine_readable ()) g;
g#launch ();
(* Set the filter to /dev/sda, in case there are any rogue
@@ -1334,7 +1331,7 @@ read the man page virt-resize(1).
(* The output disk is being created, so use cache=unsafe here. *)
add_drive_uri g ?format:output_format ~readonly:false
~cachemode:"unsafe"
(snd outfile);
- if not (quiet ()) then Progress.set_up_progress_bar ~machine_readable g;
+ if not (quiet ()) then Progress.set_up_progress_bar
~machine_readable:(machine_readable ()) g;
g#launch ();
g (* Return new handle. *)
diff --git a/sparsify/cmdline.ml b/sparsify/cmdline.ml
index 3e21428c2..b0af053ac 100644
--- a/sparsify/cmdline.ml
+++ b/sparsify/cmdline.ml
@@ -31,7 +31,6 @@ type cmdline = {
indisk : string;
format : string option;
ignores : string list;
- machine_readable : bool;
zeroes : string list;
mode : mode_t;
}
@@ -60,7 +59,6 @@ let parse_cmdline () let format = ref "" in
let ignores = ref [] in
let in_place = ref false in
- let machine_readable = ref false in
let option = ref "" in
let tmp = ref "" in
let zeroes = ref [] in
@@ -72,7 +70,6 @@ let parse_cmdline () [ L"format" ],
Getopt.Set_string (s_"format", format), s_"Format of input
disk";
[ L"ignore" ], Getopt.String (s_"fs", add ignores),
s_"Ignore filesystem";
[ L"in-place"; L"inplace" ], Getopt.Set in_place,
s_"Modify the disk image in-place";
- [ L"machine-readable" ], Getopt.Set machine_readable,
s_"Make output machine readable";
[ S 'o' ], Getopt.Set_string (s_"option", option),
s_"Add qemu-img options";
[ L"tmp" ], Getopt.Set_string
(s_"block|dir|prebuilt:file", tmp), s_"Set temporary block
device, directory or prebuilt file";
[ L"zero" ], Getopt.String (s_"fs", add zeroes),
s_"Zero filesystem";
@@ -91,7 +88,7 @@ A short summary of the options is given below. For detailed
help please
read the man page virt-sparsify(1).
")
prog in
- let opthandle = create_standard_options argspec ~anon_fun ~key_opts:true
usage_msg in
+ let opthandle = create_standard_options argspec ~anon_fun ~key_opts:true
~machine_readable:true usage_msg in
Getopt.parse opthandle;
(* Dereference the rest of the args. *)
@@ -102,7 +99,6 @@ read the man page virt-sparsify(1).
let format = match !format with "" -> None | str -> Some str
in
let ignores = List.rev !ignores in
let in_place = !in_place in
- let machine_readable = !machine_readable in
let option = match !option with "" -> None | str -> Some str
in
let tmp = match !tmp with "" -> None | str -> Some str in
let zeroes = List.rev !zeroes in
@@ -110,7 +106,7 @@ read the man page virt-sparsify(1).
(* No arguments and machine-readable mode? Print out some facts
* about what this binary supports.
*)
- if disks = [] && machine_readable then (
+ if disks = [] && machine_readable () then (
printf "virt-sparsify\n";
printf "linux-swap\n";
printf "zero\n";
@@ -180,7 +176,6 @@ read the man page virt-sparsify(1).
{ indisk = indisk;
format = format;
ignores = ignores;
- machine_readable = machine_readable;
zeroes = zeroes;
mode = mode;
}
diff --git a/sparsify/cmdline.mli b/sparsify/cmdline.mli
index fabc669a6..89848df8b 100644
--- a/sparsify/cmdline.mli
+++ b/sparsify/cmdline.mli
@@ -22,7 +22,6 @@ type cmdline = {
indisk : string;
format : string option;
ignores : string list;
- machine_readable : bool;
zeroes : string list;
mode : mode_t;
}
diff --git a/sparsify/copying.ml b/sparsify/copying.ml
index 8c8924241..a4bfcaa2a 100644
--- a/sparsify/copying.ml
+++ b/sparsify/copying.ml
@@ -37,7 +37,7 @@ type tmp_place | Directory of string | Block_device of string
| Prebuilt_file of string
let run indisk outdisk check_tmpdir compress convert
- format ignores machine_readable option tmp_param zeroes + format ignores
option tmp_param zeroes
(* Once we have got past argument parsing and start to create
* temporary files (including the potentially massive overlay file), we
@@ -179,7 +179,7 @@ You can ignore this warning or change it to a hard failure
using the
(* Note that the temporary overlay disk is always qcow2 format. *)
g#add_drive ~format:"qcow2" ~readonly:false
~cachemode:"unsafe" overlaydisk;
- if not (quiet ()) then Progress.set_up_progress_bar ~machine_readable g;
+ if not (quiet ()) then Progress.set_up_progress_bar
~machine_readable:(machine_readable ()) g;
g#launch ();
g in
diff --git a/sparsify/copying.mli b/sparsify/copying.mli
index fae903d3e..50605cc71 100644
--- a/sparsify/copying.mli
+++ b/sparsify/copying.mli
@@ -22,4 +22,4 @@
type tmp_place | Directory of string | Block_device of string | Prebuilt_file
of string
-val run : string -> string -> Cmdline.check_t -> bool -> string
option -> string option -> string list -> bool -> string option
-> string option -> string list -> unit
+val run : string -> string -> Cmdline.check_t -> bool -> string
option -> string option -> string list -> string option -> string
option -> string list -> unit
diff --git a/sparsify/in_place.ml b/sparsify/in_place.ml
index 5b7c950d0..7be8ee3e1 100644
--- a/sparsify/in_place.ml
+++ b/sparsify/in_place.ml
@@ -30,7 +30,7 @@ open Cmdline
module G = Guestfs
-let run disk format ignores machine_readable zeroes +let run disk format
ignores zeroes (* Connect to libguestfs. *)
let g = open_guestfs () in
@@ -49,7 +49,7 @@ let run disk format ignores machine_readable zeroes
g#add_drive ?format ~discard:"enable" disk;
- if not (quiet ()) then Progress.set_up_progress_bar ~machine_readable g;
+ if not (quiet ()) then Progress.set_up_progress_bar
~machine_readable:(machine_readable ()) g;
g#launch ();
(* If discard is not supported in the appliance, we must return exit
diff --git a/sparsify/in_place.mli b/sparsify/in_place.mli
index 42322858a..8f59ea1be 100644
--- a/sparsify/in_place.mli
+++ b/sparsify/in_place.mli
@@ -18,4 +18,4 @@
(** This is the virt-sparsify --in-place mode. *)
-val run : string -> string option -> string list -> bool -> string
list -> unit
+val run : string -> string option -> string list -> string list ->
unit
diff --git a/sparsify/sparsify.ml b/sparsify/sparsify.ml
index eeda5bc98..9658b4175 100644
--- a/sparsify/sparsify.ml
+++ b/sparsify/sparsify.ml
@@ -35,11 +35,9 @@ let rec main () (match cmdline.mode with
| Mode_copying (outdisk, check_tmpdir, compress, convert, option, tmp) ->
Copying.run cmdline.indisk outdisk check_tmpdir compress convert
- cmdline.format cmdline.ignores cmdline.machine_readable
- option tmp cmdline.zeroes
+ cmdline.format cmdline.ignores option tmp cmdline.zeroes
| Mode_in_place ->
- In_place.run cmdline.indisk cmdline.format cmdline.ignores
- cmdline.machine_readable cmdline.zeroes
+ In_place.run cmdline.indisk cmdline.format cmdline.ignores cmdline.zeroes
)
let () = run_main_and_handle_errors main
diff --git a/v2v/cmdline.ml b/v2v/cmdline.ml
index 5b2df3555..10cbb90e6 100644
--- a/v2v/cmdline.ml
+++ b/v2v/cmdline.ml
@@ -48,7 +48,6 @@ let parse_cmdline () let compressed = ref false in
let debug_overlays = ref false in
let do_copy = ref true in
- let machine_readable = ref false in
let print_source = ref false in
let qemu_boot = ref false in
@@ -209,8 +208,6 @@ let parse_cmdline ()
s_"Only tune the guest in the input VM";
[ L"mac" ], Getopt.String
("mac:network|bridge:out", add_mac),
s_"Map NIC to network or bridge";
- [ L"machine-readable" ], Getopt.Set machine_readable,
- s_"Make output machine readable";
[ S 'n'; L"network" ], Getopt.String ("in:out",
add_network),
s_"Map network ‘in’ to ‘out’";
[ L"no-copy" ], Getopt.Clear do_copy,
@@ -297,7 +294,7 @@ A short summary of the options is given below. For detailed
help please
read the man page virt-v2v(1).
")
prog in
- let opthandle = create_standard_options argspec ~anon_fun ~key_opts:true
usage_msg in
+ let opthandle = create_standard_options argspec ~anon_fun ~key_opts:true
~machine_readable:true usage_msg in
Getopt.parse opthandle;
(* Dereference the arguments. *)
@@ -318,7 +315,6 @@ read the man page virt-v2v(1).
| Some transport ->
error (f_"unknown input transport ‘-it %s’") transport in
let in_place = !in_place in
- let machine_readable = !machine_readable in
let output_alloc match !output_alloc with
| `Not_set | `Sparse -> Sparse
@@ -337,7 +333,7 @@ read the man page virt-v2v(1).
(* No arguments and machine-readable mode? Print out some facts
* about what this binary supports.
*)
- if args = [] && machine_readable then (
+ if args = [] && machine_readable () then (
printf "virt-v2v\n";
printf "libguestfs-rewrite\n";
printf "vcenter-https\n";
--
2.17.1
Richard W.M. Jones
2018-Aug-20 17:03 UTC
Re: [Libguestfs] [PATCH 2/2] OCaml tools: simplify machine-readable handling
Looks like just a simple refactoring, so ACK series. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html
Maybe Matching Threads
- [PATCH v2 2/2] OCaml tools: add output selection for --machine-readable
- [PATCH 1/2] mltools: create a cmdline_options struct
- [PATCH v3 1/2] OCaml tools: add and use a Getopt module
- [PATCH 3/3] OCaml tools: add crypto support (RHBZ#1362649)
- [PATCH 1/2] mlstdutils/mltools: factorize the machine-readable option