[Libguestfs] [Bug 1046905] New: RFE: add argument to virt-sysprep to disable individual default operations
Richard W.M. Jones
rjones at redhat.com
Thu Jan 9 15:45:54 UTC 2014
On Thu, Jan 09, 2014 at 04:21:10PM +0100, Pino Toscano wrote:
> + and set_operations op_string =
> + let currentopset =
> + match (!operations) with
No need for parentheses around !operations.
> + let n = ref op_name in
> + let remove = string_prefix op_name "-" in
> + if remove then
> + n := String.sub op_name 1 (String.length op_name - 1);
> + match !n with
This can be written a bit more naturally as ...
let n, remove =
if string_prefix op_name "-" then
String.sub op_name 1 (String.length op_name-1), true
else
op_name, false in
match n with
...
> + let f = if remove then Sysprep_operation.remove_defaults_from_set else Sysprep_operation.add_defaults_to_set in
> + f opset
You can actually write:
(if remove then Sysprep_operation.remove_defaults_from_set
else Sysprep_operation.add_defaults_to_set) opset
I don't know which way you think is clearer, but I would avoid the >80
character lines.
> + "--operations", Arg.String set_operations, " " ^ s_"Enable/disable specific operations";
I'd also add an alias "--operation" (it would just do the same thing).
> +let add_list_to_opset l s =
> + List.fold_left (
> + fun acc elem ->
> + OperationSet.add elem acc
> + ) s l
> +
> +let remove_list_from_opset l set =
> + OperationSet.fold (
> + fun elem opset ->
> + if List.exists (
> + fun li ->
> + li.name = elem.name
> + ) l then
> + opset
> + else
> + OperationSet.add elem opset
> + ) set empty_set
OCaml Set has subset, intersection, difference operations if you need
them. See /usr/lib64/ocaml/set.mli
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW
More information about the Libguestfs
mailing list