cfengine 0.16.0__tar.gz → 0.16.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. {cfengine-0.16.0 → cfengine-0.16.2}/PKG-INFO +1 -1
  2. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine.egg-info/PKG-INFO +1 -1
  3. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/format.py +24 -6
  4. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/004_comments.expected.cf +7 -0
  5. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/004_comments.input.cf +10 -0
  6. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/005_bundle_comments.expected.cf +24 -0
  7. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/005_bundle_comments.input.cf +20 -0
  8. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/006_remove_empty_comments.expected.cf +21 -0
  9. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/006_remove_empty_comments.input.cf +50 -0
  10. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/011_promises.expected.cf +1 -0
  11. {cfengine-0.16.0 → cfengine-0.16.2}/.github/dependabot.yml +0 -0
  12. {cfengine-0.16.0 → cfengine-0.16.2}/.github/workflows/lint-policy-in-other-repos.yml +0 -0
  13. {cfengine-0.16.0 → cfengine-0.16.2}/.github/workflows/make-check.yml +0 -0
  14. {cfengine-0.16.0 → cfengine-0.16.2}/.github/workflows/pypi-publish.yml +0 -0
  15. {cfengine-0.16.0 → cfengine-0.16.2}/.github/workflows/stale.yml +0 -0
  16. {cfengine-0.16.0 → cfengine-0.16.2}/.github/workflows/update-syntax-description.yml +0 -0
  17. {cfengine-0.16.0 → cfengine-0.16.2}/.gitignore +0 -0
  18. {cfengine-0.16.0 → cfengine-0.16.2}/.python-version +0 -0
  19. {cfengine-0.16.0 → cfengine-0.16.2}/CLAUDE.md +0 -0
  20. {cfengine-0.16.0 → cfengine-0.16.2}/HACKING.md +0 -0
  21. {cfengine-0.16.0 → cfengine-0.16.2}/LICENSE +0 -0
  22. {cfengine-0.16.0 → cfengine-0.16.2}/Makefile +0 -0
  23. {cfengine-0.16.0 → cfengine-0.16.2}/README.md +0 -0
  24. {cfengine-0.16.0 → cfengine-0.16.2}/ci/01-install.sh +0 -0
  25. {cfengine-0.16.0 → cfengine-0.16.2}/ci/02-safe-tests.sh +0 -0
  26. {cfengine-0.16.0 → cfengine-0.16.2}/ci/03-unsafe-tests.sh +0 -0
  27. {cfengine-0.16.0 → cfengine-0.16.2}/pyproject.toml +0 -0
  28. {cfengine-0.16.0 → cfengine-0.16.2}/setup.cfg +0 -0
  29. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine.egg-info/SOURCES.txt +0 -0
  30. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine.egg-info/dependency_links.txt +0 -0
  31. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine.egg-info/entry_points.txt +0 -0
  32. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine.egg-info/requires.txt +0 -0
  33. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine.egg-info/top_level.txt +0 -0
  34. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/__init__.py +0 -0
  35. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/__main__.py +0 -0
  36. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/changelog.py +0 -0
  37. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/commands.py +0 -0
  38. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/deptool-README.md +0 -0
  39. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/deptool.py +0 -0
  40. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/dev.py +0 -0
  41. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/docs.py +0 -0
  42. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/lint.py +0 -0
  43. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/lint_csv.py +0 -0
  44. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/lint_yml.py +0 -0
  45. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/main.py +0 -0
  46. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/masterfiles/__init__.py +0 -0
  47. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/masterfiles/analyze.py +0 -0
  48. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/masterfiles/check_download_matches_git.py +0 -0
  49. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/masterfiles/download.py +0 -0
  50. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/masterfiles/generate_git_tags.py +0 -0
  51. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/masterfiles/generate_release_information.py +0 -0
  52. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/masterfiles/generate_vcf_download.py +0 -0
  53. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/masterfiles/generate_vcf_git_checkout.py +0 -0
  54. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/paths.py +0 -0
  55. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/profile.py +0 -0
  56. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/shell.py +0 -0
  57. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/syntax-description.json +0 -0
  58. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/syntax_tree.py +0 -0
  59. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/up.py +0 -0
  60. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/utils.py +0 -0
  61. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/validate.py +0 -0
  62. {cfengine-0.16.0 → cfengine-0.16.2}/src/cfengine_cli/version.py +0 -0
  63. {cfengine-0.16.0 → cfengine-0.16.2}/tests/README.md +0 -0
  64. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/001_hello_world.expected.cf +0 -0
  65. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/001_hello_world.input.cf +0 -0
  66. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/002_basics.expected.cf +0 -0
  67. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/002_basics.input.cf +0 -0
  68. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/003_wrapping.expected.cf +0 -0
  69. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/003_wrapping.input.cf +0 -0
  70. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/007_class_guarded_empty_lines.expected.cf +0 -0
  71. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/007_class_guarded_empty_lines.input.cf +0 -0
  72. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/008_long_string.expected.cf +0 -0
  73. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/008_long_string.input.cf +0 -0
  74. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/009_single_line.expected.cf +0 -0
  75. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/009_single_line.input.cf +0 -0
  76. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/010_stakeholder.expected.cf +0 -0
  77. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/010_stakeholder.input.cf +0 -0
  78. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/011_macros.expected.cf +0 -0
  79. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/011_macros.input.cf +0 -0
  80. {cfengine-0.16.0 → cfengine-0.16.2}/tests/format/011_promises.input.cf +0 -0
  81. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/001_hello_world.cf +0 -0
  82. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/002_deprecations.expected.txt +0 -0
  83. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/002_deprecations.x.cf +0 -0
  84. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/003_name_lowercase.cf +0 -0
  85. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/003_name_lowercase.expected.txt +0 -0
  86. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/003_name_lowercase.x.cf +0 -0
  87. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/004_block_type.cf +0 -0
  88. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/004_block_type.expected.txt +0 -0
  89. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/004_block_type.x.cf +0 -0
  90. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/005_syntax_error.cf +0 -0
  91. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/005_syntax_error.expected.txt +0 -0
  92. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/005_syntax_error.x.cf +0 -0
  93. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/006_empty_file.expected.txt +0 -0
  94. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/006_empty_file.x.cf +0 -0
  95. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/007_namespace.cf +0 -0
  96. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/007_namespace.expected.txt +0 -0
  97. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/007_namespace.x.cf +0 -0
  98. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/008_bundle_shadows_function.cf +0 -0
  99. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/008_bundle_shadows_function.expected.txt +0 -0
  100. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/008_bundle_shadows_function.x.cf +0 -0
  101. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/009_unknown_function_inside_vars.cf +0 -0
  102. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/009_unknown_function_inside_vars.expected.txt +0 -0
  103. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/009_unknown_function_inside_vars.x.cf +0 -0
  104. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/010_mutually_exclusive_types_vars.cf +0 -0
  105. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/010_mutually_exclusive_types_vars.expected.txt +0 -0
  106. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/010_mutually_exclusive_types_vars.x.cf +0 -0
  107. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/011_invalid_attributes.expected.txt +0 -0
  108. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/011_invalid_attributes.x.cf +0 -0
  109. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/012_function_call_arg_count.cf +0 -0
  110. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/012_function_call_arg_count.expected.txt +0 -0
  111. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/012_function_call_arg_count.x.cf +0 -0
  112. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/013_num_args_body.expected.txt +0 -0
  113. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/013_num_args_body.x.cf +0 -0
  114. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/013_num_args_bundle.expected.txt +0 -0
  115. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/013_num_args_bundle.x.cf +0 -0
  116. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/013_num_args_bundle_body.cf +0 -0
  117. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/014_variadic_func_arg_count.cf +0 -0
  118. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/014_variadic_func_arg_count.expected.txt +0 -0
  119. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/014_variadic_func_arg_count.x.cf +0 -0
  120. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/015_macro_multi_def_bundle.cf +0 -0
  121. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/015_macro_multi_def_bundle.expected.txt +0 -0
  122. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/015_macro_multi_def_bundle.x.cf +0 -0
  123. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/016_half_promises.cf +0 -0
  124. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/016_half_promises.expected.txt +0 -0
  125. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/016_half_promises.x.cf +0 -0
  126. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/017_implies_body.cf +0 -0
  127. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/017_implies_body.expected.txt +0 -0
  128. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/017_implies_body.x.cf +0 -0
  129. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/018_nested_calls.cf +0 -0
  130. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/018_nested_calls.expected.txt +0 -0
  131. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/018_nested_calls.x.cf +0 -0
  132. {cfengine-0.16.0 → cfengine-0.16.2}/tests/lint/019_bundle_name_expansion.cf +0 -0
  133. {cfengine-0.16.0 → cfengine-0.16.2}/tests/run-format-tests.sh +0 -0
  134. {cfengine-0.16.0 → cfengine-0.16.2}/tests/run-lint-tests.sh +0 -0
  135. {cfengine-0.16.0 → cfengine-0.16.2}/tests/run-shell-tests.sh +0 -0
  136. {cfengine-0.16.0 → cfengine-0.16.2}/tests/run-up-validate-tests.sh +0 -0
  137. {cfengine-0.16.0 → cfengine-0.16.2}/tests/shell/001-help.sh +0 -0
  138. {cfengine-0.16.0 → cfengine-0.16.2}/tests/shell/002-version.sh +0 -0
  139. {cfengine-0.16.0 → cfengine-0.16.2}/tests/shell/003-format.sh +0 -0
  140. {cfengine-0.16.0 → cfengine-0.16.2}/tests/shell/004-format-check.sh +0 -0
  141. {cfengine-0.16.0 → cfengine-0.16.2}/tests/shell/005-lint.sh +0 -0
  142. {cfengine-0.16.0 → cfengine-0.16.2}/tests/unit/__init__.py +0 -0
  143. {cfengine-0.16.0 → cfengine-0.16.2}/tests/unit/test_changelog.py +0 -0
  144. {cfengine-0.16.0 → cfengine-0.16.2}/tests/unit/test_deps.py +0 -0
  145. {cfengine-0.16.0 → cfengine-0.16.2}/tests/unit/test_format.py +0 -0
  146. {cfengine-0.16.0 → cfengine-0.16.2}/tests/unit/test_lint_csv.py +0 -0
  147. {cfengine-0.16.0 → cfengine-0.16.2}/tests/unit/test_lint_yml.py +0 -0
  148. {cfengine-0.16.0 → cfengine-0.16.2}/tests/unit/test_paths.py +0 -0
  149. {cfengine-0.16.0 → cfengine-0.16.2}/tests/unit/test_utils.py +0 -0
  150. {cfengine-0.16.0 → cfengine-0.16.2}/tests/unit/test_version.py +0 -0
  151. {cfengine-0.16.0 → cfengine-0.16.2}/tests/up-validate/001_complex_config.yaml +0 -0
  152. {cfengine-0.16.0 → cfengine-0.16.2}/tests/up-validate/002_version.x.yaml +0 -0
  153. {cfengine-0.16.0 → cfengine-0.16.2}/tests/up-validate/003_box.x.yaml +0 -0
  154. {cfengine-0.16.0 → cfengine-0.16.2}/tests/up-validate/004_count.x.yaml +0 -0
  155. {cfengine-0.16.0 → cfengine-0.16.2}/tests/up-validate/mocks/cloud_config.json +0 -0
  156. {cfengine-0.16.0 → cfengine-0.16.2}/tests/up-validate/mocks/vagrant +0 -0
  157. {cfengine-0.16.0 → cfengine-0.16.2}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cfengine
3
- Version: 0.16.0
3
+ Version: 0.16.2
4
4
  Summary: Human-oriented CLI for interacting with CFEngine policy language, projects, and other CFEngine tools
5
5
  License: GNU GENERAL PUBLIC LICENSE
6
6
  Version 3, 29 June 2007
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cfengine
3
- Version: 0.16.0
3
+ Version: 0.16.2
4
4
  Summary: Human-oriented CLI for interacting with CFEngine policy language, projects, and other CFEngine tools
5
5
  License: GNU GENERAL PUBLIC LICENSE
6
6
  Version 3, 29 June 2007
@@ -711,6 +711,10 @@ def _format_block_header(node: Node, fmt: Formatter) -> list[Node]:
711
711
  def _needs_blank_line_before(child: Node, indent: int, line_length: int) -> bool:
712
712
  """Check if a blank separator line should precede this child node."""
713
713
  prev = child.prev_named_sibling
714
+ # Empty comments preceding this child will be dropped — look past them
715
+ # so we evaluate against the real prior content.
716
+ while prev and prev.type == "comment" and _is_empty_comment(prev):
717
+ prev = prev.prev_named_sibling
714
718
  if not prev:
715
719
  return False
716
720
 
@@ -747,14 +751,13 @@ def _needs_blank_line_before(child: Node, indent: int, line_length: int) -> bool
747
751
  if prev.type in BLOCK_TYPES:
748
752
  return True
749
753
  parent = child.parent
750
- # Trailing comment at the end of a bundle body lands deeply
751
- # indented (aligned with the deepest attribute); insert a blank
752
- # line so it doesn't run into the preceding section.
754
+ # Comment at bundle_block_body level after a bundle_section —
755
+ # either a trailing comment for the previous section or a leading
756
+ # comment for the next one. Either way, visually separate it.
753
757
  if (
754
758
  prev.type == "bundle_section"
755
759
  and parent
756
760
  and parent.type == "bundle_block_body"
757
- and _skip_comments(child.next_named_sibling, "next") is None
758
761
  ):
759
762
  return True
760
763
  if parent and parent.type in {"bundle_section", "class_guarded_promises"}:
@@ -778,12 +781,27 @@ def _needs_blank_line_before(child: Node, indent: int, line_length: int) -> bool
778
781
 
779
782
 
780
783
  def _is_empty_comment(node: Node) -> bool:
781
- """Check if a bare '#' comment should be dropped (not between other comments)."""
784
+ """Check if a bare '#' comment should be dropped.
785
+
786
+ A run of bare '#' between two non-empty comments collapses to a
787
+ single '#' — the first in the run is kept, the rest are dropped.
788
+ Bare '#' not flanked by real comments is always dropped."""
782
789
  if text(node).strip() != "#":
783
790
  return False
784
791
  prev = node.prev_named_sibling
792
+ # Not the first in a run of '#' — a kept '#' precedes us, drop.
793
+ if prev and prev.type == "comment" and text(prev).strip() == "#":
794
+ return True
795
+ # First in a run — kept only if a non-empty comment sits on each side
796
+ # (forward search walks past the rest of the run to find one).
797
+ if not (prev and prev.type == "comment"):
798
+ return True
785
799
  nxt = node.next_named_sibling
786
- return not (prev and prev.type == "comment" and nxt and nxt.type == "comment")
800
+ while nxt and nxt.type == "comment" and text(nxt).strip() == "#":
801
+ nxt = nxt.next_named_sibling
802
+ if not (nxt and nxt.type == "comment"):
803
+ return True
804
+ return False
787
805
 
788
806
 
789
807
  def _skip_comments(sibling: Node | None, direction: str = "next") -> Node | None:
@@ -144,3 +144,10 @@ body package_method cgcacgcac
144
144
  # bar
145
145
  package_changes => "bulk";
146
146
  }
147
+
148
+ # Example here:
149
+ bundle agent stigs
150
+ {
151
+ vars:
152
+ "foo" string => "bar";
153
+ }
@@ -133,3 +133,13 @@ package_changes => "bulk";
133
133
  # bar
134
134
  package_changes => "bulk";
135
135
  }
136
+
137
+ #
138
+ # Example here:
139
+ #
140
+
141
+ bundle agent stigs
142
+ {
143
+ vars:
144
+ "foo" string => "bar";
145
+ }
@@ -104,3 +104,27 @@ bundle agent trailing_example_3
104
104
 
105
105
  # Trailing
106
106
  }
107
+
108
+ bundle agent before_promise_types
109
+ {
110
+ # Reports promises:
111
+ reports:
112
+ "Hello, world!";
113
+
114
+ # Classes:
115
+ classes:
116
+ "myclass" if => "foo";
117
+
118
+ # Variables:
119
+ # Multi line
120
+ vars:
121
+ "myvar"
122
+ string => "bar",
123
+ if => "foo";
124
+
125
+ # More reports:
126
+ reports:
127
+ "Lorem ipsum";
128
+
129
+ # Trailing comment
130
+ }
@@ -101,3 +101,23 @@ if => "bar";
101
101
 
102
102
  # Trailing
103
103
  }
104
+
105
+ bundle agent before_promise_types
106
+ {
107
+ # Reports promises:
108
+ reports:
109
+ "Hello, world!";
110
+ # Classes:
111
+ classes:
112
+ "myclass" if => "foo";
113
+ # Variables:
114
+ # Multi line
115
+ vars:
116
+ "myvar"
117
+ string => "bar",
118
+ if => "foo";
119
+ # More reports:
120
+ reports:
121
+ "Lorem ipsum";
122
+ # Trailing comment
123
+ }
@@ -1,3 +1,6 @@
1
+ # explanation
2
+ #
3
+ # one more line
1
4
  bundle agent main
2
5
  {
3
6
  # comment
@@ -22,3 +25,21 @@ bundle agent c
22
25
  reports:
23
26
  "hello";
24
27
  }
28
+
29
+ bundle agent d
30
+ {
31
+ reports:
32
+ "hello";
33
+
34
+ any::
35
+ "world";
36
+ }
37
+
38
+ bundle agent e
39
+ {
40
+ reports:
41
+ "hello";
42
+
43
+ any::
44
+ "world";
45
+ }
@@ -1,3 +1,18 @@
1
+ #
2
+ #
3
+ #
4
+ #
5
+ #
6
+ # explanation
7
+ #
8
+ #
9
+ #
10
+ #
11
+ # one more line
12
+ #
13
+ #
14
+ #
15
+ #
1
16
  bundle agent main
2
17
  {
3
18
  #
@@ -28,3 +43,38 @@ bundle agent c
28
43
  reports:
29
44
  "hello";
30
45
  }
46
+ #
47
+ bundle agent d
48
+ {
49
+ #
50
+ reports:
51
+ #
52
+ "hello";
53
+ #
54
+ any::
55
+ #
56
+ "world";
57
+ }
58
+
59
+ #
60
+ #
61
+ #
62
+ bundle agent e
63
+ {
64
+ #
65
+ #
66
+ #
67
+ reports:
68
+ #
69
+ #
70
+ #
71
+ "hello";
72
+ #
73
+ #
74
+ #
75
+ any::
76
+ #
77
+ #
78
+ #
79
+ "world";
80
+ }
@@ -505,6 +505,7 @@ bundle common services_autorun
505
505
  services_autorun|services_autorun_inputs|services_autorun_bundles::
506
506
  "inputs" slist => { "$(sys.local_libdir)/autorun.cf" };
507
507
  "bundles" slist => { "autorun" };
508
+
508
509
  # run loaded bundles
509
510
  reports:
510
511
  DEBUG|DEBUG_services_autorun::
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes