# Example illustrating how body agent control files_auto_define works.
#+begin_src prep
#@ ```
#@ # Ensure that the files used in the example do not exist before running the example
#@ rm -f /tmp/example_files_auto_define.txt
#@ rm -f /tmp/source_file.txt
#@ ```
#+end_src
###############################################################################
#+begin_src cfengine3
body agent control
{
      inform => "true"; # So that we can easily see class definition
      files_auto_define => { ".*" }; # Trigger for any copied file
}
bundle agent main
{

  files:
      "/tmp/source_file.txt"
        content => "Hello World!";

      "/tmp/example_files_auto_define.txt"
        copy_from => local_dcp( "/tmp/source_file.txt" );

  reports:
      "Defined '$(with)', the canonified form of 'auto_/tmp/example_files_auto_define.txt'"
        with => canonify( "auto_/tmp/example_files_auto_define.txt"),
        if => canonify( "auto_/tmp/example_files_auto_define.txt");
}
# Copied from the standard library to make self-contained.
body copy_from local_dcp(from)
{
        source      => "$(from)";
        compare     => "digest";
}
#+end_src
###############################################################################
#+begin_src example_output
#@ ```
#@     info: Created file '/tmp/source_file.txt', mode 0600
#@     info: Updated file '/tmp/source_file.txt' with content 'Hello World!'
#@     info: Copied file '/tmp/source_file.txt' to '/tmp/example_files_auto_define.txt.cfnew' (mode '600')
#@     info: Moved '/tmp/example_files_auto_define.txt.cfnew' to '/tmp/example_files_auto_define.txt'
#@     info: Updated file '/tmp/example_files_auto_define.txt' from 'localhost:/tmp/source_file.txt'
#@     info: Auto defining class 'auto__tmp_example_files_auto_define_txt'
#@ R: Defined 'auto__tmp_example_files_auto_define_txt', the canonified form of 'auto_/tmp/example_files_auto_define.txt'
#@ ```
#+end_src
