#+begin_src cfengine3
bundle agent __main__
{
  files:
    "/tmp/example-edit.filename.txt" content => "Hello World!";
    "/tmp/example-edit.filename.txt" edit_line => show_edit_filename;
}

bundle edit_line show_edit_filename
{
  reports:
    "$(with)"
      with => concat(
        "I found the string 'World' in the file being ",
        "edited ('$(edit.filename)')"
      ),
      if => strcmp("false", "$(edit.empty_before_use)");

    # It's probably
    # useless to probe
    # the content of the
    # file if you are
    # ignoring
    # pre-existing
    # content.
    "$(with)"
      with => concat(
        "It's probably not very useful to inspect content",
        "that is being thrown away."
      ),
      if => strcmp("true", "$(edit.empty_before_use)");

    "$(with)"
      with => concat(
        "This version of CFEngine does not know if the",
        "edit operation is expected to ignore pre-existing ",
        "content the variable 'edit.empty_before_use' does ",
        "not exist"
      ),
      unless => isvariable("edit.empty_before_use");
}

body edit_defaults my_empty_file_before_editing
{
  empty_file_before_editing => "true";

  # The variable
  # edit.empty_before_use allows this
  # to be known from within an
  # edit_line bundle.
}

#+end_src
###############################################################################
#+begin_src example_output
#@ ```
#@ R: I found the string 'World' in the file being edited ('/tmp/example-edit.filename.txt')
#@ ```
#+end_src
