Forum: CFEngine Help
Subject: Re: Testing variable types
Author: [email protected]
Link to topic: https://cfengine.com/forum/read.php?3,25321,25356#msg-25356
I think I wasn't very clear.
I see that in the copbl both edit_line append_if_no_line(str)
and edit_line append_if_no_lines(list) are present and that they are
functionally the same.
bundle edit_line append_if_no_line(str)
{
insert_lines:
"$(str)"
comment => "Append a line to the file if it doesn't already exist";
}
bundle edit_line append_if_no_lines(list)
{
insert_lines:
"$(list)"
comment => "Append lines to the file if they don't already exist";
}
I think that append_if_no_lines is misleading, because you can pass it either a
list or a string. Where list iteration is done depends how you are calling it.
There are no comments indicating how it should be called, and there is nothing
to encourage its expected usage (passing in a list) or prevent its unexpected
usage (passing in a string).
Consider the following examples
body common control {
bundlesequence => {
"main",
};
inputs => {
"cfengine_stdlib.cf",
};
}
bundle agent main {
vars:
"list1" slist => { "L1i1", "L1i2", "L1i3" };
"list2" slist => { "L2i1", "L2i2", "L2i3" };
files:
"/tmp/test1"
create => "true",
edit_line => append_if_no_lines("@(main.list1)");
"/tmp/test2"
create => "true",
edit_line => append_if_no_line("$(list1)");
}
I was trying to figure out what the best approach to amending this in the copbl
would be, just documentation about how to pass a list, or if there were some
way to enforce passing a list.
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine