regline

Prototype: regline(regex, filename)

Return type: class

Description: Returns whether the regular expression regex matches a line in file filename.

Note that regex must match an entire line of the file in order to give a true result.

Arguments:

  • regex : Regular expression, in the range .*
  • filename : Filename to search, in the range .*

Example:

    bundle agent example
    {
    files:

      "/tmp/testfile" edit_line => test;
    }

    bundle edit_line test
    {
    classes:

        "ok" expression => regline(".*XYZ.*","$(edit.filename)");

    reports:

     ok::

       "File $(edit.filename) has a line with \"XYZ\" in it";

    }

This function is useful for edit_line applications, where one might want to set a class for detecting the presence of a string that does not exactly match one being inserted. For example:

    bundle edit_line upgrade_cfexecd
      {
      classes:

        # Check there is not already a crontab line, not identical to
        # the one proposed below...

        "exec_fix" not => regline(".*cf-execd.*","$(edit.filename)");

      insert_lines:

        exec_fix::

         "0,5,10,15,20,25,30,35,40,45,50,55 * * * * /var/cfengine/bin/cf-execd -F";

      reports:

        exec_fix::

         "Added a 5 minute schedule to crontabs";
      }