cfengine 0.15.0__tar.gz → 0.16.1__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.15.0 → cfengine-0.16.1}/.github/dependabot.yml +5 -2
- {cfengine-0.15.0 → cfengine-0.16.1}/.github/workflows/lint-policy-in-other-repos.yml +9 -1
- cfengine-0.16.1/.github/workflows/stale.yml +25 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/Makefile +4 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/PKG-INFO +32 -2
- {cfengine-0.15.0 → cfengine-0.16.1}/README.md +28 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/pyproject.toml +4 -2
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine.egg-info/PKG-INFO +32 -2
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine.egg-info/SOURCES.txt +15 -1
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine.egg-info/requires.txt +2 -0
- cfengine-0.16.1/src/cfengine_cli/changelog.py +426 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/commands.py +25 -1
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/dev.py +3 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/docs.py +49 -17
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/format.py +98 -33
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/lint.py +24 -58
- cfengine-0.16.1/src/cfengine_cli/lint_yml.py +25 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/main.py +46 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/masterfiles/analyze.py +2 -2
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/masterfiles/check_download_matches_git.py +1 -1
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/paths.py +30 -5
- cfengine-0.16.1/src/cfengine_cli/up.py +221 -0
- cfengine-0.16.1/src/cfengine_cli/validate.py +137 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/version.py +2 -5
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/002_basics.expected.cf +5 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/002_basics.input.cf +1 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/003_wrapping.expected.cf +1 -1
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/003_wrapping.input.cf +1 -1
- cfengine-0.16.1/tests/format/004_comments.expected.cf +153 -0
- cfengine-0.16.1/tests/format/004_comments.input.cf +145 -0
- cfengine-0.16.1/tests/format/005_bundle_comments.expected.cf +130 -0
- cfengine-0.16.1/tests/format/005_bundle_comments.input.cf +123 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/011_macros.expected.cf +13 -3
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/011_macros.input.cf +13 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/011_promises.expected.cf +15 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/015_macro_multi_def_bundle.cf +2 -5
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/017_implies_body.cf +1 -2
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/018_nested_calls.cf +4 -4
- cfengine-0.16.1/tests/run-up-validate-tests.sh +48 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/shell/005-lint.sh +10 -2
- cfengine-0.16.1/tests/unit/test_changelog.py +147 -0
- cfengine-0.16.1/tests/unit/test_lint_yml.py +54 -0
- cfengine-0.16.1/tests/unit/test_paths.py +32 -0
- cfengine-0.16.1/tests/up-validate/001_complex_config.yaml +71 -0
- cfengine-0.16.1/tests/up-validate/002_version.x.yaml +16 -0
- cfengine-0.16.1/tests/up-validate/003_box.x.yaml +16 -0
- cfengine-0.16.1/tests/up-validate/004_count.x.yaml +16 -0
- cfengine-0.16.1/tests/up-validate/mocks/cloud_config.json +10 -0
- cfengine-0.16.1/tests/up-validate/mocks/vagrant +11 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/uv.lock +241 -21
- cfengine-0.15.0/tests/format/004_comments.expected.cf +0 -47
- cfengine-0.15.0/tests/format/004_comments.input.cf +0 -45
- cfengine-0.15.0/tests/format/005_bundle_comments.expected.cf +0 -54
- cfengine-0.15.0/tests/format/005_bundle_comments.input.cf +0 -52
- cfengine-0.15.0/tests/unit/test_paths.py +0 -19
- {cfengine-0.15.0 → cfengine-0.16.1}/.github/workflows/make-check.yml +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/.github/workflows/pypi-publish.yml +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/.github/workflows/update-syntax-description.yml +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/.gitignore +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/.python-version +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/CLAUDE.md +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/HACKING.md +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/LICENSE +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/ci/01-install.sh +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/ci/02-safe-tests.sh +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/ci/03-unsafe-tests.sh +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/setup.cfg +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine.egg-info/dependency_links.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine.egg-info/entry_points.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine.egg-info/top_level.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/__init__.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/__main__.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/deptool-README.md +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/deptool.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/lint_csv.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/masterfiles/__init__.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/masterfiles/download.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/masterfiles/generate_git_tags.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/masterfiles/generate_release_information.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/masterfiles/generate_vcf_download.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/masterfiles/generate_vcf_git_checkout.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/profile.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/shell.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/syntax-description.json +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/syntax_tree.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/src/cfengine_cli/utils.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/README.md +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/001_hello_world.expected.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/001_hello_world.input.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/006_remove_empty_comments.expected.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/006_remove_empty_comments.input.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/007_class_guarded_empty_lines.expected.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/007_class_guarded_empty_lines.input.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/008_long_string.expected.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/008_long_string.input.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/009_single_line.expected.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/009_single_line.input.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/010_stakeholder.expected.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/010_stakeholder.input.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/format/011_promises.input.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/001_hello_world.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/002_deprecations.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/002_deprecations.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/003_name_lowercase.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/003_name_lowercase.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/003_name_lowercase.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/004_block_type.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/004_block_type.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/004_block_type.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/005_syntax_error.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/005_syntax_error.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/005_syntax_error.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/006_empty_file.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/006_empty_file.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/007_namespace.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/007_namespace.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/007_namespace.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/008_bundle_shadows_function.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/008_bundle_shadows_function.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/008_bundle_shadows_function.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/009_unknown_function_inside_vars.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/009_unknown_function_inside_vars.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/009_unknown_function_inside_vars.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/010_mutually_exclusive_types_vars.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/010_mutually_exclusive_types_vars.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/010_mutually_exclusive_types_vars.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/011_invalid_attributes.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/011_invalid_attributes.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/012_function_call_arg_count.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/012_function_call_arg_count.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/012_function_call_arg_count.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/013_num_args_body.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/013_num_args_body.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/013_num_args_bundle.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/013_num_args_bundle.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/013_num_args_bundle_body.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/014_variadic_func_arg_count.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/014_variadic_func_arg_count.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/014_variadic_func_arg_count.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/015_macro_multi_def_bundle.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/015_macro_multi_def_bundle.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/016_half_promises.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/016_half_promises.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/016_half_promises.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/017_implies_body.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/017_implies_body.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/018_nested_calls.expected.txt +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/018_nested_calls.x.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/lint/019_bundle_name_expansion.cf +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/run-format-tests.sh +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/run-lint-tests.sh +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/run-shell-tests.sh +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/shell/001-help.sh +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/shell/002-version.sh +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/shell/003-format.sh +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/shell/004-format-check.sh +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/unit/__init__.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/unit/test_deps.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/unit/test_format.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/unit/test_lint_csv.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/unit/test_utils.py +0 -0
- {cfengine-0.15.0 → cfengine-0.16.1}/tests/unit/test_version.py +0 -0
|
@@ -3,15 +3,18 @@
|
|
|
3
3
|
|
|
4
4
|
version: 2
|
|
5
5
|
updates:
|
|
6
|
-
- package-ecosystem: "
|
|
6
|
+
- package-ecosystem: "uv"
|
|
7
7
|
directory: "/"
|
|
8
8
|
schedule:
|
|
9
9
|
interval: "weekly"
|
|
10
|
-
|
|
10
|
+
reviewers:
|
|
11
|
+
- "larsewi"
|
|
12
|
+
- "olehermanse"
|
|
11
13
|
- package-ecosystem: "github-actions"
|
|
12
14
|
directory: "/"
|
|
13
15
|
schedule:
|
|
14
16
|
interval: "weekly"
|
|
15
17
|
reviewers:
|
|
18
|
+
- "larsewi"
|
|
16
19
|
- "olehermanse"
|
|
17
20
|
prefix: "GitHub Actions"
|
|
@@ -24,6 +24,11 @@ jobs:
|
|
|
24
24
|
with:
|
|
25
25
|
repository: cfengine/masterfiles
|
|
26
26
|
path: masterfiles
|
|
27
|
+
- name: Checkout documentation
|
|
28
|
+
uses: actions/checkout@v4
|
|
29
|
+
with:
|
|
30
|
+
repository: cfengine/documentation
|
|
31
|
+
path: documentation
|
|
27
32
|
- name: Checkout modules
|
|
28
33
|
uses: actions/checkout@v4
|
|
29
34
|
with:
|
|
@@ -44,4 +49,7 @@ jobs:
|
|
|
44
49
|
run: |
|
|
45
50
|
uv run cfengine lint --strict no ../masterfiles
|
|
46
51
|
uv run cfengine lint --strict no ../modules
|
|
47
|
-
|
|
52
|
+
uv run cfengine lint --strict no ../documentation
|
|
53
|
+
# TODO: Add core when ready
|
|
54
|
+
# TODO: Do all of them together, with strict, when ready;
|
|
55
|
+
# uv run cfengine lint ../core ../masterfiles ../documentation ../modules
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# For more information, see:
|
|
2
|
+
# https://github.com/actions/stale
|
|
3
|
+
name: Label and close stale pull requests
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
schedule:
|
|
7
|
+
- cron: "31 19 * * *"
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
stale:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
permissions:
|
|
14
|
+
pull-requests: write
|
|
15
|
+
issues: read
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/stale@v5
|
|
19
|
+
with:
|
|
20
|
+
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
21
|
+
stale-pr-message: "Marking this PR as stale due to inactivity; it will be closed in 7 days."
|
|
22
|
+
stale-pr-label: "stale"
|
|
23
|
+
days-before-stale: 30
|
|
24
|
+
days-before-close: 7
|
|
25
|
+
close-pr-message: "Closing PR due to inactivity. Feel free to open a new PR if necessary."
|
|
@@ -9,12 +9,15 @@ venv:
|
|
|
9
9
|
format: venv
|
|
10
10
|
uv tool run black . --target-version py310
|
|
11
11
|
prettier . --write
|
|
12
|
+
uv run cfengine format ./
|
|
12
13
|
|
|
13
14
|
lint: venv
|
|
14
15
|
uv tool run black --check . --fast
|
|
15
16
|
uv tool run flake8 src/ --ignore=E203,W503,E722,E731 --max-complexity=100 --max-line-length=160
|
|
16
17
|
uv tool run pyflakes src/
|
|
17
18
|
uv tool run pyright src/
|
|
19
|
+
uv run cfengine lint --strict=no ./
|
|
20
|
+
uv run cfengine format --check
|
|
18
21
|
|
|
19
22
|
install:
|
|
20
23
|
pipx install --force --editable .
|
|
@@ -24,3 +27,4 @@ check: venv format lint
|
|
|
24
27
|
uv run bash tests/run-lint-tests.sh
|
|
25
28
|
uv run bash tests/run-format-tests.sh
|
|
26
29
|
uv run bash tests/run-shell-tests.sh
|
|
30
|
+
uv run bash tests/run-up-validate-tests.sh
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cfengine
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary: Human-oriented CLI for interacting with CFEngine tools
|
|
3
|
+
Version: 0.16.1
|
|
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
|
|
7
7
|
|
|
@@ -699,6 +699,8 @@ Requires-Dist: cfbs>=5.5.0
|
|
|
699
699
|
Requires-Dist: tree-sitter-cfengine>=1.1.12
|
|
700
700
|
Requires-Dist: tree-sitter>=0.25
|
|
701
701
|
Requires-Dist: markdown-it-py>=3.0.0
|
|
702
|
+
Requires-Dist: pyyaml>=6.0.3
|
|
703
|
+
Requires-Dist: pydantic>=2.12.5
|
|
702
704
|
|
|
703
705
|
# CFEngine command line interface (CLI)
|
|
704
706
|
|
|
@@ -779,6 +781,34 @@ cfengine build
|
|
|
779
781
|
|
|
780
782
|
(This is equivalent to running `cfbs build`).
|
|
781
783
|
|
|
784
|
+
### Spawn and install cfengine from a config
|
|
785
|
+
|
|
786
|
+
**this feature is still a work in progress**
|
|
787
|
+
|
|
788
|
+
Given a yaml config:
|
|
789
|
+
|
|
790
|
+
```yaml
|
|
791
|
+
templates:
|
|
792
|
+
ubuntu:
|
|
793
|
+
provider: vagrant
|
|
794
|
+
vagrant:
|
|
795
|
+
box: ubuntu/focal64
|
|
796
|
+
|
|
797
|
+
groups:
|
|
798
|
+
myhub:
|
|
799
|
+
role: hub
|
|
800
|
+
source:
|
|
801
|
+
count: 1
|
|
802
|
+
mode: spawn
|
|
803
|
+
spawn: ubuntu
|
|
804
|
+
```
|
|
805
|
+
|
|
806
|
+
up will spawn the necessary VMs and install cfengine using cf-remote
|
|
807
|
+
|
|
808
|
+
```
|
|
809
|
+
cfengine up config.yaml
|
|
810
|
+
```
|
|
811
|
+
|
|
782
812
|
## Supported platforms and versions
|
|
783
813
|
|
|
784
814
|
This tool will only support a limited number of platforms, it is not intended to run everywhere CFEngine runs.
|
|
@@ -77,6 +77,34 @@ cfengine build
|
|
|
77
77
|
|
|
78
78
|
(This is equivalent to running `cfbs build`).
|
|
79
79
|
|
|
80
|
+
### Spawn and install cfengine from a config
|
|
81
|
+
|
|
82
|
+
**this feature is still a work in progress**
|
|
83
|
+
|
|
84
|
+
Given a yaml config:
|
|
85
|
+
|
|
86
|
+
```yaml
|
|
87
|
+
templates:
|
|
88
|
+
ubuntu:
|
|
89
|
+
provider: vagrant
|
|
90
|
+
vagrant:
|
|
91
|
+
box: ubuntu/focal64
|
|
92
|
+
|
|
93
|
+
groups:
|
|
94
|
+
myhub:
|
|
95
|
+
role: hub
|
|
96
|
+
source:
|
|
97
|
+
count: 1
|
|
98
|
+
mode: spawn
|
|
99
|
+
spawn: ubuntu
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
up will spawn the necessary VMs and install cfengine using cf-remote
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
cfengine up config.yaml
|
|
106
|
+
```
|
|
107
|
+
|
|
80
108
|
## Supported platforms and versions
|
|
81
109
|
|
|
82
110
|
This tool will only support a limited number of platforms, it is not intended to run everywhere CFEngine runs.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
requires = ["setuptools>=
|
|
2
|
+
requires = ["setuptools>=82.0.1", "setuptools-scm>=10.0.5"]
|
|
3
3
|
build-backend = "setuptools.build_meta"
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "cfengine"
|
|
7
7
|
dynamic = ["version"]
|
|
8
|
-
description = "Human-oriented CLI for interacting with CFEngine tools"
|
|
8
|
+
description = "Human-oriented CLI for interacting with CFEngine policy language, projects, and other CFEngine tools"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {file = "LICENSE"}
|
|
11
11
|
requires-python = ">=3.10"
|
|
@@ -15,6 +15,8 @@ dependencies = [
|
|
|
15
15
|
"tree-sitter-cfengine>=1.1.12",
|
|
16
16
|
"tree-sitter>=0.25",
|
|
17
17
|
"markdown-it-py>=3.0.0",
|
|
18
|
+
"pyyaml>=6.0.3",
|
|
19
|
+
"pydantic>=2.12.5",
|
|
18
20
|
]
|
|
19
21
|
classifiers = [
|
|
20
22
|
"Development Status :: 3 - Alpha",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cfengine
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary: Human-oriented CLI for interacting with CFEngine tools
|
|
3
|
+
Version: 0.16.1
|
|
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
|
|
7
7
|
|
|
@@ -699,6 +699,8 @@ Requires-Dist: cfbs>=5.5.0
|
|
|
699
699
|
Requires-Dist: tree-sitter-cfengine>=1.1.12
|
|
700
700
|
Requires-Dist: tree-sitter>=0.25
|
|
701
701
|
Requires-Dist: markdown-it-py>=3.0.0
|
|
702
|
+
Requires-Dist: pyyaml>=6.0.3
|
|
703
|
+
Requires-Dist: pydantic>=2.12.5
|
|
702
704
|
|
|
703
705
|
# CFEngine command line interface (CLI)
|
|
704
706
|
|
|
@@ -779,6 +781,34 @@ cfengine build
|
|
|
779
781
|
|
|
780
782
|
(This is equivalent to running `cfbs build`).
|
|
781
783
|
|
|
784
|
+
### Spawn and install cfengine from a config
|
|
785
|
+
|
|
786
|
+
**this feature is still a work in progress**
|
|
787
|
+
|
|
788
|
+
Given a yaml config:
|
|
789
|
+
|
|
790
|
+
```yaml
|
|
791
|
+
templates:
|
|
792
|
+
ubuntu:
|
|
793
|
+
provider: vagrant
|
|
794
|
+
vagrant:
|
|
795
|
+
box: ubuntu/focal64
|
|
796
|
+
|
|
797
|
+
groups:
|
|
798
|
+
myhub:
|
|
799
|
+
role: hub
|
|
800
|
+
source:
|
|
801
|
+
count: 1
|
|
802
|
+
mode: spawn
|
|
803
|
+
spawn: ubuntu
|
|
804
|
+
```
|
|
805
|
+
|
|
806
|
+
up will spawn the necessary VMs and install cfengine using cf-remote
|
|
807
|
+
|
|
808
|
+
```
|
|
809
|
+
cfengine up config.yaml
|
|
810
|
+
```
|
|
811
|
+
|
|
782
812
|
## Supported platforms and versions
|
|
783
813
|
|
|
784
814
|
This tool will only support a limited number of platforms, it is not intended to run everywhere CFEngine runs.
|
|
@@ -11,6 +11,7 @@ uv.lock
|
|
|
11
11
|
.github/workflows/lint-policy-in-other-repos.yml
|
|
12
12
|
.github/workflows/make-check.yml
|
|
13
13
|
.github/workflows/pypi-publish.yml
|
|
14
|
+
.github/workflows/stale.yml
|
|
14
15
|
.github/workflows/update-syntax-description.yml
|
|
15
16
|
ci/01-install.sh
|
|
16
17
|
ci/02-safe-tests.sh
|
|
@@ -23,6 +24,7 @@ src/cfengine.egg-info/requires.txt
|
|
|
23
24
|
src/cfengine.egg-info/top_level.txt
|
|
24
25
|
src/cfengine_cli/__init__.py
|
|
25
26
|
src/cfengine_cli/__main__.py
|
|
27
|
+
src/cfengine_cli/changelog.py
|
|
26
28
|
src/cfengine_cli/commands.py
|
|
27
29
|
src/cfengine_cli/deptool-README.md
|
|
28
30
|
src/cfengine_cli/deptool.py
|
|
@@ -31,13 +33,16 @@ src/cfengine_cli/docs.py
|
|
|
31
33
|
src/cfengine_cli/format.py
|
|
32
34
|
src/cfengine_cli/lint.py
|
|
33
35
|
src/cfengine_cli/lint_csv.py
|
|
36
|
+
src/cfengine_cli/lint_yml.py
|
|
34
37
|
src/cfengine_cli/main.py
|
|
35
38
|
src/cfengine_cli/paths.py
|
|
36
39
|
src/cfengine_cli/profile.py
|
|
37
40
|
src/cfengine_cli/shell.py
|
|
38
41
|
src/cfengine_cli/syntax-description.json
|
|
39
42
|
src/cfengine_cli/syntax_tree.py
|
|
43
|
+
src/cfengine_cli/up.py
|
|
40
44
|
src/cfengine_cli/utils.py
|
|
45
|
+
src/cfengine_cli/validate.py
|
|
41
46
|
src/cfengine_cli/version.py
|
|
42
47
|
src/cfengine_cli/masterfiles/__init__.py
|
|
43
48
|
src/cfengine_cli/masterfiles/analyze.py
|
|
@@ -51,6 +56,7 @@ tests/README.md
|
|
|
51
56
|
tests/run-format-tests.sh
|
|
52
57
|
tests/run-lint-tests.sh
|
|
53
58
|
tests/run-shell-tests.sh
|
|
59
|
+
tests/run-up-validate-tests.sh
|
|
54
60
|
tests/format/001_hello_world.expected.cf
|
|
55
61
|
tests/format/001_hello_world.input.cf
|
|
56
62
|
tests/format/002_basics.expected.cf
|
|
@@ -133,9 +139,17 @@ tests/shell/003-format.sh
|
|
|
133
139
|
tests/shell/004-format-check.sh
|
|
134
140
|
tests/shell/005-lint.sh
|
|
135
141
|
tests/unit/__init__.py
|
|
142
|
+
tests/unit/test_changelog.py
|
|
136
143
|
tests/unit/test_deps.py
|
|
137
144
|
tests/unit/test_format.py
|
|
138
145
|
tests/unit/test_lint_csv.py
|
|
146
|
+
tests/unit/test_lint_yml.py
|
|
139
147
|
tests/unit/test_paths.py
|
|
140
148
|
tests/unit/test_utils.py
|
|
141
|
-
tests/unit/test_version.py
|
|
149
|
+
tests/unit/test_version.py
|
|
150
|
+
tests/up-validate/001_complex_config.yaml
|
|
151
|
+
tests/up-validate/002_version.x.yaml
|
|
152
|
+
tests/up-validate/003_box.x.yaml
|
|
153
|
+
tests/up-validate/004_count.x.yaml
|
|
154
|
+
tests/up-validate/mocks/cloud_config.json
|
|
155
|
+
tests/up-validate/mocks/vagrant
|