cfengine 0.16.4__tar.gz → 0.16.5__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.
- {cfengine-0.16.4 → cfengine-0.16.5}/.github/workflows/lint-policy-in-other-repos.yml +7 -4
- {cfengine-0.16.4 → cfengine-0.16.5}/.github/workflows/update-syntax-description.yml +1 -1
- {cfengine-0.16.4 → cfengine-0.16.5}/PKG-INFO +1 -1
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine.egg-info/PKG-INFO +1 -1
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine.egg-info/SOURCES.txt +2 -0
- cfengine-0.16.5/src/cfengine.egg-info/scm_file_list.json +153 -0
- cfengine-0.16.5/src/cfengine.egg-info/scm_version.json +8 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/format.py +17 -5
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/011_macros.expected.cf +91 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/011_macros.input.cf +56 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/.github/dependabot.yml +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/.github/workflows/make-check.yml +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/.github/workflows/pypi-publish.yml +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/.github/workflows/stale.yml +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/.gitignore +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/.python-version +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/CLAUDE.md +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/HACKING.md +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/LICENSE +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/Makefile +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/README.md +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/ci/01-install.sh +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/ci/02-safe-tests.sh +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/ci/03-unsafe-tests.sh +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/pyproject.toml +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/setup.cfg +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine.egg-info/dependency_links.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine.egg-info/entry_points.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine.egg-info/requires.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine.egg-info/top_level.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/__init__.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/__main__.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/changelog.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/commands.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/deptool-README.md +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/deptool.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/dev.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/docs.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/lint.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/lint_csv.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/lint_yml.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/main.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/masterfiles/__init__.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/masterfiles/analyze.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/masterfiles/check_download_matches_git.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/masterfiles/download.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/masterfiles/generate_git_tags.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/masterfiles/generate_release_information.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/masterfiles/generate_vcf_download.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/masterfiles/generate_vcf_git_checkout.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/paths.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/profile.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/shell.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/syntax-description.json +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/syntax_tree.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/up.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/utils.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/validate.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/version.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/README.md +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/001_hello_world.expected.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/001_hello_world.input.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/002_basics.expected.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/002_basics.input.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/003_wrapping.expected.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/003_wrapping.input.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/004_comments.expected.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/004_comments.input.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/005_bundle_comments.expected.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/005_bundle_comments.input.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/006_remove_empty_comments.expected.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/006_remove_empty_comments.input.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/007_class_guarded_empty_lines.expected.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/007_class_guarded_empty_lines.input.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/008_long_string.expected.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/008_long_string.input.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/009_single_line.expected.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/009_single_line.input.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/010_stakeholder.expected.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/010_stakeholder.input.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/011_promises.expected.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/format/011_promises.input.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/001_hello_world.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/002_deprecations.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/002_deprecations.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/003_name_lowercase.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/003_name_lowercase.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/003_name_lowercase.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/004_block_type.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/004_block_type.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/004_block_type.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/005_syntax_error.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/005_syntax_error.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/005_syntax_error.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/006_empty_file.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/006_empty_file.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/007_namespace.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/007_namespace.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/007_namespace.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/008_bundle_shadows_function.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/008_bundle_shadows_function.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/008_bundle_shadows_function.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/009_unknown_function_inside_vars.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/009_unknown_function_inside_vars.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/009_unknown_function_inside_vars.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/010_mutually_exclusive_types_vars.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/010_mutually_exclusive_types_vars.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/010_mutually_exclusive_types_vars.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/011_invalid_attributes.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/011_invalid_attributes.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/012_function_call_arg_count.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/012_function_call_arg_count.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/012_function_call_arg_count.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/013_num_args_body.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/013_num_args_body.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/013_num_args_bundle.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/013_num_args_bundle.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/013_num_args_bundle_body.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/014_variadic_func_arg_count.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/014_variadic_func_arg_count.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/014_variadic_func_arg_count.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/015_macro_multi_def_bundle.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/015_macro_multi_def_bundle.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/015_macro_multi_def_bundle.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/016_half_promises.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/016_half_promises.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/016_half_promises.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/017_implies_body.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/017_implies_body.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/017_implies_body.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/018_nested_calls.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/018_nested_calls.expected.txt +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/018_nested_calls.x.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/019_bundle_name_expansion.cf +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/run-format-tests.sh +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/run-lint-tests.sh +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/run-shell-tests.sh +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/run-up-validate-tests.sh +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/shell/001-help.sh +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/shell/002-version.sh +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/shell/003-format.sh +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/shell/004-format-check.sh +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/shell/005-lint.sh +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/unit/__init__.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/unit/test_changelog.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/unit/test_deps.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/unit/test_format.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/unit/test_lint_csv.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/unit/test_lint_yml.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/unit/test_paths.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/unit/test_utils.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/unit/test_version.py +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/up-validate/001_complex_config.yaml +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/up-validate/002_version.x.yaml +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/up-validate/003_box.x.yaml +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/up-validate/004_count.x.yaml +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/up-validate/mocks/cloud_config.json +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/tests/up-validate/mocks/vagrant +0 -0
- {cfengine-0.16.4 → cfengine-0.16.5}/uv.lock +0 -0
|
@@ -44,12 +44,15 @@ jobs:
|
|
|
44
44
|
python -m pip install --upgrade pip
|
|
45
45
|
python -m pip install uv
|
|
46
46
|
make install
|
|
47
|
-
- name:
|
|
47
|
+
- name: Check other repos with cfengine format and cfengine lint
|
|
48
48
|
working-directory: cfengine-cli
|
|
49
49
|
run: |
|
|
50
|
-
|
|
51
|
-
uv run cfengine lint --strict no ../modules
|
|
52
|
-
|
|
50
|
+
# Linting should work with no errors on all the other repos:
|
|
51
|
+
uv run cfengine lint --strict no ../masterfiles ../documentation ../modules
|
|
52
|
+
# Formatting should work with no errors on all the other repos:
|
|
53
|
+
uv run cfengine format ../masterfiles ../documentation ../modules
|
|
54
|
+
# Linting should still work after formatting:
|
|
55
|
+
uv run cfengine lint --strict no ../masterfiles ../documentation ../modules
|
|
53
56
|
# TODO: Add core when ready
|
|
54
57
|
# TODO: Do all of them together, with strict, when ready;
|
|
55
58
|
# uv run cfengine lint ../core ../masterfiles ../documentation ../modules
|
|
@@ -35,7 +35,7 @@ jobs:
|
|
|
35
35
|
- name: Install cfengine
|
|
36
36
|
run: |
|
|
37
37
|
cf-remote --version master download --edition community ubuntu24 amd64 hub
|
|
38
|
-
sudo dpkg -i ~/.cfengine/cf-remote/packages/cfengine-community*.deb
|
|
38
|
+
sudo dpkg -i ~/.cache/cfengine/cf-remote/packages/cfengine-community*.deb
|
|
39
39
|
- name: Extract new syntax-description
|
|
40
40
|
run: |
|
|
41
41
|
(
|
|
@@ -21,6 +21,8 @@ src/cfengine.egg-info/SOURCES.txt
|
|
|
21
21
|
src/cfengine.egg-info/dependency_links.txt
|
|
22
22
|
src/cfengine.egg-info/entry_points.txt
|
|
23
23
|
src/cfengine.egg-info/requires.txt
|
|
24
|
+
src/cfengine.egg-info/scm_file_list.json
|
|
25
|
+
src/cfengine.egg-info/scm_version.json
|
|
24
26
|
src/cfengine.egg-info/top_level.txt
|
|
25
27
|
src/cfengine_cli/__init__.py
|
|
26
28
|
src/cfengine_cli/__main__.py
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
{
|
|
2
|
+
"files": [
|
|
3
|
+
"README.md",
|
|
4
|
+
"uv.lock",
|
|
5
|
+
"Makefile",
|
|
6
|
+
".python-version",
|
|
7
|
+
"LICENSE",
|
|
8
|
+
"pyproject.toml",
|
|
9
|
+
"HACKING.md",
|
|
10
|
+
"CLAUDE.md",
|
|
11
|
+
".gitignore",
|
|
12
|
+
"src/cfengine_cli/changelog.py",
|
|
13
|
+
"src/cfengine_cli/shell.py",
|
|
14
|
+
"src/cfengine_cli/__init__.py",
|
|
15
|
+
"src/cfengine_cli/version.py",
|
|
16
|
+
"src/cfengine_cli/lint_yml.py",
|
|
17
|
+
"src/cfengine_cli/profile.py",
|
|
18
|
+
"src/cfengine_cli/deptool-README.md",
|
|
19
|
+
"src/cfengine_cli/utils.py",
|
|
20
|
+
"src/cfengine_cli/format.py",
|
|
21
|
+
"src/cfengine_cli/syntax-description.json",
|
|
22
|
+
"src/cfengine_cli/docs.py",
|
|
23
|
+
"src/cfengine_cli/up.py",
|
|
24
|
+
"src/cfengine_cli/lint_csv.py",
|
|
25
|
+
"src/cfengine_cli/syntax_tree.py",
|
|
26
|
+
"src/cfengine_cli/main.py",
|
|
27
|
+
"src/cfengine_cli/deptool.py",
|
|
28
|
+
"src/cfengine_cli/lint.py",
|
|
29
|
+
"src/cfengine_cli/commands.py",
|
|
30
|
+
"src/cfengine_cli/validate.py",
|
|
31
|
+
"src/cfengine_cli/__main__.py",
|
|
32
|
+
"src/cfengine_cli/paths.py",
|
|
33
|
+
"src/cfengine_cli/dev.py",
|
|
34
|
+
"src/cfengine_cli/masterfiles/check_download_matches_git.py",
|
|
35
|
+
"src/cfengine_cli/masterfiles/generate_vcf_git_checkout.py",
|
|
36
|
+
"src/cfengine_cli/masterfiles/__init__.py",
|
|
37
|
+
"src/cfengine_cli/masterfiles/download.py",
|
|
38
|
+
"src/cfengine_cli/masterfiles/analyze.py",
|
|
39
|
+
"src/cfengine_cli/masterfiles/generate_release_information.py",
|
|
40
|
+
"src/cfengine_cli/masterfiles/generate_vcf_download.py",
|
|
41
|
+
"src/cfengine_cli/masterfiles/generate_git_tags.py",
|
|
42
|
+
"ci/01-install.sh",
|
|
43
|
+
"ci/02-safe-tests.sh",
|
|
44
|
+
"ci/03-unsafe-tests.sh",
|
|
45
|
+
"tests/README.md",
|
|
46
|
+
"tests/run-shell-tests.sh",
|
|
47
|
+
"tests/run-up-validate-tests.sh",
|
|
48
|
+
"tests/run-lint-tests.sh",
|
|
49
|
+
"tests/run-format-tests.sh",
|
|
50
|
+
"tests/lint/015_macro_multi_def_bundle.cf",
|
|
51
|
+
"tests/lint/010_mutually_exclusive_types_vars.cf",
|
|
52
|
+
"tests/lint/010_mutually_exclusive_types_vars.x.cf",
|
|
53
|
+
"tests/lint/013_num_args_body.expected.txt",
|
|
54
|
+
"tests/lint/007_namespace.x.cf",
|
|
55
|
+
"tests/lint/018_nested_calls.expected.txt",
|
|
56
|
+
"tests/lint/010_mutually_exclusive_types_vars.expected.txt",
|
|
57
|
+
"tests/lint/016_half_promises.expected.txt",
|
|
58
|
+
"tests/lint/002_deprecations.x.cf",
|
|
59
|
+
"tests/lint/009_unknown_function_inside_vars.cf",
|
|
60
|
+
"tests/lint/008_bundle_shadows_function.expected.txt",
|
|
61
|
+
"tests/lint/013_num_args_bundle.x.cf",
|
|
62
|
+
"tests/lint/017_implies_body.cf",
|
|
63
|
+
"tests/lint/017_implies_body.expected.txt",
|
|
64
|
+
"tests/lint/008_bundle_shadows_function.cf",
|
|
65
|
+
"tests/lint/003_name_lowercase.x.cf",
|
|
66
|
+
"tests/lint/009_unknown_function_inside_vars.x.cf",
|
|
67
|
+
"tests/lint/004_block_type.x.cf",
|
|
68
|
+
"tests/lint/011_invalid_attributes.expected.txt",
|
|
69
|
+
"tests/lint/005_syntax_error.cf",
|
|
70
|
+
"tests/lint/013_num_args_bundle_body.cf",
|
|
71
|
+
"tests/lint/003_name_lowercase.expected.txt",
|
|
72
|
+
"tests/lint/002_deprecations.expected.txt",
|
|
73
|
+
"tests/lint/013_num_args_bundle.expected.txt",
|
|
74
|
+
"tests/lint/012_function_call_arg_count.expected.txt",
|
|
75
|
+
"tests/lint/004_block_type.cf",
|
|
76
|
+
"tests/lint/005_syntax_error.x.cf",
|
|
77
|
+
"tests/lint/015_macro_multi_def_bundle.expected.txt",
|
|
78
|
+
"tests/lint/006_empty_file.expected.txt",
|
|
79
|
+
"tests/lint/014_variadic_func_arg_count.x.cf",
|
|
80
|
+
"tests/lint/004_block_type.expected.txt",
|
|
81
|
+
"tests/lint/016_half_promises.cf",
|
|
82
|
+
"tests/lint/018_nested_calls.x.cf",
|
|
83
|
+
"tests/lint/011_invalid_attributes.x.cf",
|
|
84
|
+
"tests/lint/018_nested_calls.cf",
|
|
85
|
+
"tests/lint/014_variadic_func_arg_count.cf",
|
|
86
|
+
"tests/lint/017_implies_body.x.cf",
|
|
87
|
+
"tests/lint/012_function_call_arg_count.x.cf",
|
|
88
|
+
"tests/lint/007_namespace.expected.txt",
|
|
89
|
+
"tests/lint/015_macro_multi_def_bundle.x.cf",
|
|
90
|
+
"tests/lint/019_bundle_name_expansion.cf",
|
|
91
|
+
"tests/lint/001_hello_world.cf",
|
|
92
|
+
"tests/lint/009_unknown_function_inside_vars.expected.txt",
|
|
93
|
+
"tests/lint/007_namespace.cf",
|
|
94
|
+
"tests/lint/014_variadic_func_arg_count.expected.txt",
|
|
95
|
+
"tests/lint/012_function_call_arg_count.cf",
|
|
96
|
+
"tests/lint/008_bundle_shadows_function.x.cf",
|
|
97
|
+
"tests/lint/013_num_args_body.x.cf",
|
|
98
|
+
"tests/lint/003_name_lowercase.cf",
|
|
99
|
+
"tests/lint/005_syntax_error.expected.txt",
|
|
100
|
+
"tests/lint/006_empty_file.x.cf",
|
|
101
|
+
"tests/lint/016_half_promises.x.cf",
|
|
102
|
+
"tests/shell/001-help.sh",
|
|
103
|
+
"tests/shell/002-version.sh",
|
|
104
|
+
"tests/shell/004-format-check.sh",
|
|
105
|
+
"tests/shell/005-lint.sh",
|
|
106
|
+
"tests/shell/003-format.sh",
|
|
107
|
+
"tests/up-validate/002_version.x.yaml",
|
|
108
|
+
"tests/up-validate/004_count.x.yaml",
|
|
109
|
+
"tests/up-validate/001_complex_config.yaml",
|
|
110
|
+
"tests/up-validate/003_box.x.yaml",
|
|
111
|
+
"tests/up-validate/mocks/vagrant",
|
|
112
|
+
"tests/up-validate/mocks/cloud_config.json",
|
|
113
|
+
"tests/format/003_wrapping.input.cf",
|
|
114
|
+
"tests/format/011_macros.expected.cf",
|
|
115
|
+
"tests/format/009_single_line.input.cf",
|
|
116
|
+
"tests/format/009_single_line.expected.cf",
|
|
117
|
+
"tests/format/010_stakeholder.input.cf",
|
|
118
|
+
"tests/format/007_class_guarded_empty_lines.expected.cf",
|
|
119
|
+
"tests/format/004_comments.expected.cf",
|
|
120
|
+
"tests/format/001_hello_world.input.cf",
|
|
121
|
+
"tests/format/011_promises.expected.cf",
|
|
122
|
+
"tests/format/006_remove_empty_comments.input.cf",
|
|
123
|
+
"tests/format/005_bundle_comments.expected.cf",
|
|
124
|
+
"tests/format/002_basics.expected.cf",
|
|
125
|
+
"tests/format/005_bundle_comments.input.cf",
|
|
126
|
+
"tests/format/006_remove_empty_comments.expected.cf",
|
|
127
|
+
"tests/format/007_class_guarded_empty_lines.input.cf",
|
|
128
|
+
"tests/format/003_wrapping.expected.cf",
|
|
129
|
+
"tests/format/010_stakeholder.expected.cf",
|
|
130
|
+
"tests/format/004_comments.input.cf",
|
|
131
|
+
"tests/format/001_hello_world.expected.cf",
|
|
132
|
+
"tests/format/011_promises.input.cf",
|
|
133
|
+
"tests/format/008_long_string.expected.cf",
|
|
134
|
+
"tests/format/008_long_string.input.cf",
|
|
135
|
+
"tests/format/002_basics.input.cf",
|
|
136
|
+
"tests/format/011_macros.input.cf",
|
|
137
|
+
"tests/unit/__init__.py",
|
|
138
|
+
"tests/unit/test_version.py",
|
|
139
|
+
"tests/unit/test_deps.py",
|
|
140
|
+
"tests/unit/test_utils.py",
|
|
141
|
+
"tests/unit/test_format.py",
|
|
142
|
+
"tests/unit/test_changelog.py",
|
|
143
|
+
"tests/unit/test_lint_csv.py",
|
|
144
|
+
"tests/unit/test_lint_yml.py",
|
|
145
|
+
"tests/unit/test_paths.py",
|
|
146
|
+
".github/dependabot.yml",
|
|
147
|
+
".github/workflows/lint-policy-in-other-repos.yml",
|
|
148
|
+
".github/workflows/pypi-publish.yml",
|
|
149
|
+
".github/workflows/make-check.yml",
|
|
150
|
+
".github/workflows/stale.yml",
|
|
151
|
+
".github/workflows/update-syntax-description.yml"
|
|
152
|
+
]
|
|
153
|
+
}
|
|
@@ -236,6 +236,11 @@ def split_generic_list(
|
|
|
236
236
|
"""Split list elements into one-per-line strings, each pre-indented."""
|
|
237
237
|
has_macros = _contains_macro(middle)
|
|
238
238
|
elements: list[str] = []
|
|
239
|
+
# Indices of the lines that end a top-level value element. For a nested
|
|
240
|
+
# element, like a function call inside an slist, this is only the final line,
|
|
241
|
+
# outside the function call, so we do not add trailing commas into function
|
|
242
|
+
# call argument lists.
|
|
243
|
+
value_end_indices: list[int] = []
|
|
239
244
|
for element in middle:
|
|
240
245
|
if elements and element.type == ",":
|
|
241
246
|
elements[-1] = elements[-1] + ","
|
|
@@ -243,6 +248,9 @@ def split_generic_list(
|
|
|
243
248
|
if element.type == "macro":
|
|
244
249
|
elements.append(text(element))
|
|
245
250
|
continue
|
|
251
|
+
if element.type == "comment":
|
|
252
|
+
elements.append(" " * indent + text(element))
|
|
253
|
+
continue
|
|
246
254
|
line = " " * indent + stringify_single_line_node(element)
|
|
247
255
|
# Strict < reserves 1 char for the comma appended after this check
|
|
248
256
|
if len(line) < line_length:
|
|
@@ -251,14 +259,18 @@ def split_generic_list(
|
|
|
251
259
|
lines = split_generic_value(element, indent, line_length)
|
|
252
260
|
elements.append(" " * indent + lines[0])
|
|
253
261
|
elements.extend(lines[1:])
|
|
262
|
+
value_end_indices.append(len(elements) - 1)
|
|
254
263
|
|
|
255
|
-
#
|
|
256
|
-
# (one per branch); without, fix only the last non-comment element.
|
|
264
|
+
# Set trailing commas
|
|
257
265
|
if has_macros:
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
266
|
+
# With macros: Use the indices we counted earlier to ensure there
|
|
267
|
+
# are trailing commas at the right places (before macro, inside macro,
|
|
268
|
+
# after macros), but NOT inside the nested function calls which may
|
|
269
|
+
# be multi line
|
|
270
|
+
for i in value_end_indices:
|
|
271
|
+
elements[i] = _set_trailing_comma(elements[i], trailing_comma)
|
|
261
272
|
else:
|
|
273
|
+
# No macros: Just ensure the last non-comment element has a trailing comma
|
|
262
274
|
for i in reversed(range(len(elements))):
|
|
263
275
|
if not elements[i].lstrip().startswith("#"):
|
|
264
276
|
elements[i] = _set_trailing_comma(elements[i], trailing_comma)
|
|
@@ -200,3 +200,94 @@ bundle agent test(a)
|
|
|
200
200
|
"$(a)";
|
|
201
201
|
}
|
|
202
202
|
@endif
|
|
203
|
+
bundle agent test_macro_call_param
|
|
204
|
+
{
|
|
205
|
+
classes:
|
|
206
|
+
"a" -> { "CFE-3927" }
|
|
207
|
+
and => {
|
|
208
|
+
# The variable must be defined
|
|
209
|
+
isvariable("default:def.control_agent_environment_vars"),
|
|
210
|
+
# The length of the variable must be greater than 0 (can't be an empty list)
|
|
211
|
+
isgreaterthan(length("default:def.control_agent_environment_vars"), 0),
|
|
212
|
+
# Each element of the list must be of the form KEY=VALUE
|
|
213
|
+
every(".+=.+", "default:def.control_agent_environment_vars"),
|
|
214
|
+
# In 3.18 and greater we can validate the type of variable in use
|
|
215
|
+
@if minimum_version(3.18.0)
|
|
216
|
+
regcmp(
|
|
217
|
+
"(policy slist|data array)",
|
|
218
|
+
type("default:def.control_agent_environment_vars", "true")
|
|
219
|
+
),
|
|
220
|
+
@endif
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
"b" -> { "CFE-3927" }
|
|
224
|
+
and => {
|
|
225
|
+
# The variable must be defined
|
|
226
|
+
isvariable("default:def.control_agent_environment_vars"),
|
|
227
|
+
isgreaterthan(length("default:def.control_agent_environment_vars"), 0),
|
|
228
|
+
@if minimum_version(3.18.0)
|
|
229
|
+
regcmp(
|
|
230
|
+
"(policy slist|data array)",
|
|
231
|
+
type("default:def.control_agent_environment_vars", "true")
|
|
232
|
+
),
|
|
233
|
+
@endif
|
|
234
|
+
every(".+=.+", "default:def.control_agent_environment_vars"),
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
"c" -> { "CFE-3927" }
|
|
238
|
+
and => {
|
|
239
|
+
# The variable must be defined
|
|
240
|
+
isvariable("default:def.control_agent_environment_vars"),
|
|
241
|
+
isgreaterthan(length("default:def.control_agent_environment_vars"), 0),
|
|
242
|
+
@if minimum_version(3.18.0)
|
|
243
|
+
regcmp(
|
|
244
|
+
"(policy slist|data array)",
|
|
245
|
+
type("default:def.control_agent_environment_vars", "true")
|
|
246
|
+
),
|
|
247
|
+
every(".+=.+", "default:def.control_agent_environment_vars"),
|
|
248
|
+
@endif
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
"d" -> { "CFE-3927" }
|
|
252
|
+
and => {
|
|
253
|
+
@if minimum_version(3.18.0)
|
|
254
|
+
every(".+=.+", "default:def.control_agent_environment_vars"),
|
|
255
|
+
@endif
|
|
256
|
+
isvariable("default:def.control_agent_environment_vars"),
|
|
257
|
+
isgreaterthan(length("default:def.control_agent_environment_vars"), 0),
|
|
258
|
+
regcmp(
|
|
259
|
+
"(policy slist|data array)",
|
|
260
|
+
type("default:def.control_agent_environment_vars", "true")
|
|
261
|
+
),
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
"e" -> { "CFE-3927" }
|
|
265
|
+
and => {
|
|
266
|
+
@if minimum_version(3.18.0)
|
|
267
|
+
"a",
|
|
268
|
+
@endif
|
|
269
|
+
"b",
|
|
270
|
+
"c",
|
|
271
|
+
"d",
|
|
272
|
+
isgreaterthan(length("default:def.control_agent_environment_vars"), 0),
|
|
273
|
+
regcmp(
|
|
274
|
+
"(policy slist|data array)",
|
|
275
|
+
type("default:def.control_agent_environment_vars", "true")
|
|
276
|
+
),
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
"f" -> { "CFE-3927" }
|
|
280
|
+
and => {
|
|
281
|
+
isgreaterthan(length("default:def.control_agent_environment_vars"), 0),
|
|
282
|
+
regcmp(
|
|
283
|
+
"(policy slist|data array)",
|
|
284
|
+
type("default:def.control_agent_environment_vars", "true")
|
|
285
|
+
),
|
|
286
|
+
"a",
|
|
287
|
+
"b",
|
|
288
|
+
"c",
|
|
289
|
+
@if minimum_version(3.18.0)
|
|
290
|
+
"d",
|
|
291
|
+
@endif
|
|
292
|
+
};
|
|
293
|
+
}
|
|
@@ -193,3 +193,59 @@ reports:
|
|
|
193
193
|
"$(a)";
|
|
194
194
|
}
|
|
195
195
|
@endif
|
|
196
|
+
|
|
197
|
+
bundle agent test_macro_call_param
|
|
198
|
+
{
|
|
199
|
+
classes:
|
|
200
|
+
"a" -> { "CFE-3927" }
|
|
201
|
+
and => {
|
|
202
|
+
# The variable must be defined
|
|
203
|
+
isvariable("default:def.control_agent_environment_vars"),
|
|
204
|
+
# The length of the variable must be greater than 0 (can't be an empty list)
|
|
205
|
+
isgreaterthan(length("default:def.control_agent_environment_vars"), 0),
|
|
206
|
+
# Each element of the list must be of the form KEY=VALUE
|
|
207
|
+
every(".+=.+", "default:def.control_agent_environment_vars"),
|
|
208
|
+
# In 3.18 and greater we can validate the type of variable in use
|
|
209
|
+
@if minimum_version(3.18.0)
|
|
210
|
+
regcmp("(policy slist|data array)",type("default:def.control_agent_environment_vars", "true")),
|
|
211
|
+
@endif
|
|
212
|
+
};
|
|
213
|
+
"b" -> { "CFE-3927" }
|
|
214
|
+
and => {
|
|
215
|
+
# The variable must be defined
|
|
216
|
+
isvariable("default:def.control_agent_environment_vars"),isgreaterthan(length("default:def.control_agent_environment_vars"), 0),
|
|
217
|
+
@if minimum_version(3.18.0)
|
|
218
|
+
regcmp( "(policy slist|data array)", type("default:def.control_agent_environment_vars", "true") ),
|
|
219
|
+
@endif
|
|
220
|
+
every(".+=.+", "default:def.control_agent_environment_vars"),
|
|
221
|
+
};
|
|
222
|
+
"c" -> { "CFE-3927" }
|
|
223
|
+
and => {
|
|
224
|
+
# The variable must be defined
|
|
225
|
+
isvariable("default:def.control_agent_environment_vars"), isgreaterthan(length("default:def.control_agent_environment_vars"), 0),
|
|
226
|
+
@if minimum_version(3.18.0)
|
|
227
|
+
regcmp("(policy slist|data array)",type("default:def.control_agent_environment_vars", "true")),every(".+=.+", "default:def.control_agent_environment_vars"),
|
|
228
|
+
@endif
|
|
229
|
+
};
|
|
230
|
+
"d" -> { "CFE-3927" }
|
|
231
|
+
and => {
|
|
232
|
+
@if minimum_version(3.18.0)
|
|
233
|
+
every(".+=.+", "default:def.control_agent_environment_vars"),
|
|
234
|
+
@endif
|
|
235
|
+
isvariable("default:def.control_agent_environment_vars"),isgreaterthan(length("default:def.control_agent_environment_vars"), 0),regcmp("(policy slist|data array)",type("default:def.control_agent_environment_vars", "true")),
|
|
236
|
+
};
|
|
237
|
+
"e" -> { "CFE-3927" }
|
|
238
|
+
and => {
|
|
239
|
+
@if minimum_version(3.18.0)
|
|
240
|
+
"a",
|
|
241
|
+
@endif
|
|
242
|
+
"b","c","d",isgreaterthan(length("default:def.control_agent_environment_vars"),0),regcmp("(policy slist|data array)",type("default:def.control_agent_environment_vars", "true")),
|
|
243
|
+
};
|
|
244
|
+
"f" -> { "CFE-3927" }
|
|
245
|
+
and => {
|
|
246
|
+
isgreaterthan(length("default:def.control_agent_environment_vars"), 0),regcmp("(policy slist|data array)",type("default:def.control_agent_environment_vars", "true")),"a","b","c",
|
|
247
|
+
@if minimum_version(3.18.0)
|
|
248
|
+
"d",
|
|
249
|
+
@endif
|
|
250
|
+
};
|
|
251
|
+
}
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/masterfiles/check_download_matches_git.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/masterfiles/generate_release_information.py
RENAMED
|
File without changes
|
|
File without changes
|
{cfengine-0.16.4 → cfengine-0.16.5}/src/cfengine_cli/masterfiles/generate_vcf_git_checkout.py
RENAMED
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
{cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/009_unknown_function_inside_vars.expected.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cfengine-0.16.4 → cfengine-0.16.5}/tests/lint/010_mutually_exclusive_types_vars.expected.txt
RENAMED
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|