1#  Copyright 2021 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#+begin_src prep
24#@ ```
25#@ echo -n 1,2,3 > /tmp/file.csv
26#@ echo -n '{ "x": 200 }' > /tmp/file.json
27#@ echo '- a' > /tmp/file.yaml
28#@ echo '- b' >> /tmp/file.yaml
29#@ ```
30#+end_src
31###############################################################################
32#+begin_src cfengine3
33bundle agent main
34{
35  vars:
36
37      "csv" data => readdata("/tmp/file.csv", "auto"); # or file type "CSV"
38      "json" data => readdata("/tmp/file.json", "auto"); # or file type "JSON"
39
40      "csv_str" string => format("%S", csv);
41      "json_str" string => format("%S", json);
42
43    feature_yaml:: # we can only test YAML data if libyaml is compiled in
44      "yaml" data => readdata("/tmp/file.yaml", "auto"); # or file type "YAML"
45      "yaml_str" string => format("%S", yaml);
46  reports:
47
48      "From /tmp/file.csv, got data $(csv_str)";
49      "From /tmp/file.json, got data $(json_str)";
50    feature_yaml::
51      "From /tmp/file.yaml, we would get data $(yaml_str)";
52    !feature_yaml:: # show the output anyway
53      'From /tmp/file.yaml, we would get data ["a","b"]';
54
55}
56#+end_src
57###############################################################################
58#+begin_src example_output
59#@ ```
60#@ R: From /tmp/file.csv, got data [["1","2","3"]]
61#@ R: From /tmp/file.json, got data {"x":200}
62#@ R: From /tmp/file.yaml, we would get data ["a","b"]
63#@ ```
64#+end_src
65