1#  Copyright 2020 Northern.tech AS
2
3#  This file is part of Cfengine 3 - written and maintained by Northern.tech AS.
4
5#  This program is free software; you can redistribute it and/or modify it
6#  under the terms of the GNU General Public License as published by the
7#  Free Software Foundation; version 3.
8
9#  This program is distributed in the hope that it will be useful,
10#  but WITHOUT ANY WARRANTY; without even the implied warranty of
11#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12#  GNU General Public License for more details.
13
14# You should have received a copy of the GNU General Public License
15# along with this program; if not, write to the Free Software
16# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
17
18# To the extent this program is licensed as part of the Enterprise
19# versions of Cfengine, the applicable Commercial Open Source License
20# (COSL) may apply to this file if you as a licensee so wish it. See
21# included file COSL.txt.
22
23###############################################################################
24#+begin_src cfengine3
25bundle agent example_using_template_method_inline_mustache
26{
27  vars:
28
29      # Here we construct a data container that will be passed to the mustache
30      # templating engine
31
32      "d"
33        data => '{ "host": "docs.cfengine.com" }';
34
35      # Here we specify a string that will be used as an inline mustache template
36      "mustache_template_string"
37        string => "Welcome to host '{{{host}}}'";
38
39  files:
40      # Here we render the file using the data container and inline template specification
41
42      "/tmp/example.txt"
43        create => "true",
44        template_method => "inline_mustache",
45        edit_template_string => "$(mustache_template_string)",
46        template_data => @(d);
47
48  reports:
49      "/tmp/example.txt"
50        printfile => cat( $(this.promiser) );
51}
52
53# Copied from stdlib, lib/reports.cf
54body printfile cat(file)
55# @brief Report the contents of a file
56# @param file The full path of the file to report
57{
58        file_to_print => "$(file)";
59        number_of_lines => "inf";
60}
61bundle agent __main__
62{
63      methods: "example_using_template_method_inline_mustache";
64}
65#+end_src
66###############################################################################
67#+begin_src example_output
68#@ ```
69#@ R: /tmp/example.txt
70#@ R: Welcome to host 'docs.cfengine.com'
71#@ ```
72#+end_src
73