Forum: Cfengine Help
Subject: Re: Edit region of file - remove existing content
Author: toddnni
Link to topic: https://cfengine.com/forum/read.php?3,18633,20842#msg-20842
phnakarin
I tried the code you posted. It didn't work for me. Here is a modified version
of your code which produces an unexpected result.
body common control {
#bundlesequence => { "fill_file" };
bundlesequence => { "fill_file", "test_region" };
}
bundle agent fill_file {
files:
"/tmp/test_file.txt"
comment => "Fill the file with text.",
edit_defaults => empty,
create => "true",
edit_line => insert;
}
body edit_defaults empty {
empty_file_before_editing => "true";
}
bundle edit_line insert {
insert_lines:
"This is a test file. The lines in the end should not be deleted.
test
## CF3 PROTECTED AREA DO NOT EDIT ##
This should be edited!
## END CF3 PROTECTED AREA DO NOT EDIT ##
test
test
test
test";
}
bundle agent test_region {
files:
"/tmp/test_file.txt"
comment => "Test, insert stuff into selected region of file",
edit_line => insert_between_region_002(
"## CF3 PROTECTED AREA DO NOT EDIT ##",
"## END CF3 PROTECTED AREA DO NOT EDIT ##",
"123456790");
}
bundle edit_line insert_between_region_002(sdelim,edelim,insert_file) {
delete_lines:
".*"
delete_select => example_002("$(sdelim)","$(edelim)"), # try to comment
select_region => start_end("$(sdelim)","$(edelim)");
insert_lines:
"$(insert_file)"
select_region => start_end("$(sdelim)","$(edelim)");
}
body delete_select example_002(s1,s2) {
delete_if_not_match_from_list => { "$(s1)","$(s2)" };
}
body select_region start_end(start,end) {
select_start => "$(start)";
select_end => "$(end)";
include_start_delimiter => "false";
include_end_delimiter => "false";
}
And the result on my FreeBSD 8.1 system is
This is a test file. The lines in the end should not be deleted.
test
## CF3 PROTECTED AREA DO NOT EDIT ##
123456790
## END CF3 PROTECTED AREA DO NOT EDIT ##
The '## END CF3 PROTECTED AREA DO NOT EDIT ##' also gets unexpectedly deleted
if we remove the 'delete_select' line.
Thanks for your time.
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine