gitlabform 6.2.0__tar.gz → 6.2.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.
- gitlabform-6.2.2/.github/CODEOWNERS +1 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/dependabot.yml +28 -9
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/_releases.yml +10 -22
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/build.yml +3 -3
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/pr-ci-workflow.yml +2 -2
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/static-analysis.yml +3 -3
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/tests-acceptance.yml +4 -4
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/tests-unit.yml +1 -1
- gitlabform-6.2.2/.python-version +1 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/PKG-INFO +5 -5
- {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/docs.py +5 -5
- {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/gitlab/run_gitlab_in_docker.sh +2 -2
- {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/main.py +19 -66
- {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/package.py +1 -1
- {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/release.py +2 -2
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/changelog.md +49 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/contrib/coding_guidelines.md +7 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/contrib/local_development.md +53 -64
- gitlabform-6.2.2/docs/images/ti8m-logo.png +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/index.md +2 -1
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/project_security_settings.md +2 -2
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/running.md +3 -1
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/__init__.py +41 -11
- gitlabform-6.2.2/gitlabform/constants.py +16 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/__init__.py +0 -6
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/output.py +5 -4
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/abstract_processor.py +28 -2
- gitlabform-6.2.2/gitlabform/processors/group/group_badges_processor.py +27 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/__init__.py +2 -2
- gitlabform-6.2.2/gitlabform/processors/project/badges_processor.py +27 -0
- gitlabform-6.2.2/gitlabform/processors/project/deploy_keys_processor.py +106 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/files_processor.py +3 -5
- gitlabform-6.2.2/gitlabform/processors/project/merge_requests_approval_rules.py +38 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/merge_requests_approvals.py +3 -17
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/project_security_settings.py +6 -15
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/project_settings_processor.py +4 -17
- gitlabform-6.2.2/gitlabform/processors/project/project_variables_processor.py +76 -0
- gitlabform-6.2.2/gitlabform/processors/util/badges_processor.py +78 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/util/difference_logger.py +14 -5
- {gitlabform-6.2.0 → gitlabform-6.2.2}/mkdocs.yml +5 -8
- {gitlabform-6.2.0 → gitlabform-6.2.2}/pyproject.toml +21 -37
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tbump.toml +2 -1
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_merge_request_approval_rules.py +53 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_deploy_keys.py +31 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_files.py +95 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_remote_mirrors.py +3 -3
- gitlabform-6.2.2/tests/unit/processors/test_abstract_processor.py +116 -0
- gitlabform-6.2.2/tests/unit/processors/test_deploy_keys_processor.py +195 -0
- gitlabform-6.2.2/tests/unit/processors/test_difference_logger.py +146 -0
- gitlabform-6.2.2/tests/unit/processors/test_merge_requests_approval_rules_processor.py +120 -0
- gitlabform-6.2.2/tests/unit/processors/test_util_badges_processor.py +226 -0
- gitlabform-6.2.2/tests/unit/test_output.py +19 -0
- gitlabform-6.2.2/tests/unit/test_show_summary.py +35 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/uv.lock +351 -396
- gitlabform-6.2.0/.github/CODEOWNERS +0 -1
- gitlabform-6.2.0/.python-version +0 -1
- gitlabform-6.2.0/gitlabform/constants.py +0 -7
- gitlabform-6.2.0/gitlabform/gitlab/group_badges.py +0 -50
- gitlabform-6.2.0/gitlabform/gitlab/project_badges.py +0 -52
- gitlabform-6.2.0/gitlabform/gitlab/project_deploy_keys.py +0 -102
- gitlabform-6.2.0/gitlabform/processors/group/group_badges_processor.py +0 -17
- gitlabform-6.2.0/gitlabform/processors/project/badges_processor.py +0 -17
- gitlabform-6.2.0/gitlabform/processors/project/deploy_keys_processor.py +0 -18
- gitlabform-6.2.0/gitlabform/processors/project/merge_requests_approval_rules.py +0 -17
- gitlabform-6.2.0/gitlabform/processors/project/project_variables_processor.py +0 -100
- gitlabform-6.2.0/tests/unit/processors/test_abstract_processor.py +0 -35
- gitlabform-6.2.0/tests/unit/processors/test_difference_logger.py +0 -71
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.coveragerc +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.dockerignore +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.git-blame-ignore-revs +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/ISSUE_TEMPLATE/question-or-other-issue.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/actions/setup-uv-local/README.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/actions/setup-uv-local/action.yml +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/_main.yml +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/codecov-upload.yml +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/prs-entrypoint-forks.yml +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.github/workflows/prs-entrypoint-main.yml +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.gitignore +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.lgtm.yml +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.mypy.ini +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.overrides/gitlabform-logo-favicon.png +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/.overrides/gitlabform-logo-favicon.svg +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/CONTRIBUTING.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/Dockerfile +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/LICENSE +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/README.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/codecov.yml +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/__init__.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/common.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/docker.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/env.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/gitlab/await-healthy.sh +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/gitlab/gitlab.rb +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/gitlab/healthcheck-and-setup.sh +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/gitlab/tests.Dockerfile +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/infra.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/dev/qa.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/automation.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/contrib/implementation_design.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/contrib/index.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/contrib/releases.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/contrib/workflows.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/features.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/Opencast-logo.png +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/egnyte-logo.svg +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/elastic-path-logo.svg +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/gitlabform-logo-square.png +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/gitlabform-logo.png +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/gitlabform-logo.svg +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/group-ldap-links-provider.png +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/liquidlight-logo.svg +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/roche-logo.png +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/images/stroeer-online-marketing-logo.svg +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/installation.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/archive_unarchive.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/avatar.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/badges.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/ci_cd_variables.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/deploy_keys.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/files.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/group_ldap_links.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/group_saml_links.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/index.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/integrations.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/job_token_scope.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/labels.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/members.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/merge_requests.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/pipeline_schedules.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/project_transfer.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/protected_branches.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/protected_environments.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/push_mirrors.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/push_rules.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/resource_groups.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/settings.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/tags_protection.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/reference/webhooks.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/requirements.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/similar_apps.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/docs/upgrade.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlab-config/config.yml +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlab-config/gitlab-config.md +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/configuration/__init__.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/configuration/common.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/configuration/core.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/configuration/groups.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/configuration/projects.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/configuration/transform.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/commits.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/core.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/group_ldap_links.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/groups.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/merge_requests.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/pipelines.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/project_merge_requests_approvals.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/project_protected_environments.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/projects.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/python_gitlab.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/gitlab/variables.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/lists/__init__.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/lists/filter.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/lists/groups.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/lists/projects.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/__init__.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/application/__init__.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/application/application_settings_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/defining_keys.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/__init__.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_hooks_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_labels_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_ldap_links_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_members_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_protected_branches_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_push_rules_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_saml_links_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_settings_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/group/group_variables_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/multiple_entities_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/branches_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/hooks_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/integrations_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/job_token_scope_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/members_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/project_labels_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/project_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/project_push_rules_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/remote_mirrors_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/resource_groups_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/schedules_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/project/tags_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/shared/__init__.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/shared/protected_environments_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/util/__init__.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/util/branch_protection.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/util/decorators.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/util/labels_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/processors/util/variables_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/run.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/gitlabform/util.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/prek.toml +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/__init__.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/__init__.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/conftest.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_branches.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_branches_users_case_insensitive.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_group_ldap_links.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_group_protected_branches.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_group_push_rules.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_group_saml_links.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_group_settings.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_group_variables.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_merge_request_approvals_settings.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_protected_environments.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_push_rules.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/premium/test_tags.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/__init__.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_application_settings.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_archive_project.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_badges.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_branches.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_deploy_keys_all_projects.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_files_templates.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_avatar.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_badges.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_hooks.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_labels.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_members_case_insensitive.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_members_groups.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_members_users.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_settings.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_group_variables.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_hooks.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_integrations.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_job_token_scope.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_members.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_members_add_group.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_members_enforce.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_project_avatar.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_project_group_members_case_insensitive.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_project_labels.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_project_members_case_insensitve.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_project_settings.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_project_variables.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_resource_groups.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_running.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_scheduled_for_deletion_project.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_schedules.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_tags.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_token_from_config.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_transfer_project.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/standard/test_wildcard_patterns.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/ultimate/test_group_members.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/ultimate/test_group_settings.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/ultimate/test_members.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/ultimate/test_project_security_settings.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/acceptance/ultimate/test_project_settings.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/__init__.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/__init__.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_case_sensitivity.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_inheritance_break_projects_and_groups.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_inheritance_break_subgroups.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_inheritance_break_validation.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_projects_and_groups.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_skip_groups_skip_projects.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_subgroups.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_wildcard_patterns.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/test_yaml_version.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/transform/test_access_level_transformer.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/transform/test_group_transformer.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/transform/test_implicit_name_transformer.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/transform/test_user_and_group_transformers.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/configuration/transform/test_user_transformer.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/gitlab/test_core.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/gitlab/test_python_gitlab.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/__init__.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/test_abstract_processors.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/test_branches_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/test_files_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/test_group_members_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/test_group_protected_branches_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/test_group_saml_links_processor.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/processors/test_schedules_processor_extended_cron_pattern.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/test_access_levels.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/test_non_empty_configs_provider.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/test_parse_args.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/test_projects_provider.py +0 -0
- {gitlabform-6.2.0 → gitlabform-6.2.2}/tests/unit/test_utils.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @amimas @gdubicki @rickbrouwer @TimKnight01
|
|
@@ -9,29 +9,48 @@ updates:
|
|
|
9
9
|
directory: "/"
|
|
10
10
|
schedule:
|
|
11
11
|
interval: "weekly"
|
|
12
|
+
|
|
12
13
|
- package-ecosystem: "github-actions"
|
|
13
14
|
directory: "/"
|
|
14
15
|
schedule:
|
|
15
16
|
interval: "monthly"
|
|
17
|
+
|
|
16
18
|
- package-ecosystem: "uv"
|
|
17
19
|
directory: "/"
|
|
18
20
|
schedule:
|
|
19
21
|
interval: "weekly"
|
|
22
|
+
cooldown:
|
|
23
|
+
default-days: 30
|
|
24
|
+
include:
|
|
25
|
+
- "pytest*"
|
|
26
|
+
- "coverage"
|
|
27
|
+
- "cryptography"
|
|
28
|
+
- "deepdiff"
|
|
29
|
+
- "xkcdpass"
|
|
30
|
+
- "bandit"
|
|
31
|
+
- "black"
|
|
32
|
+
- "codespell"
|
|
33
|
+
- "mypy*"
|
|
34
|
+
- "ruff"
|
|
35
|
+
- "types-*"
|
|
36
|
+
- "markdown*"
|
|
37
|
+
- "zensical*"
|
|
38
|
+
- "pygments"
|
|
39
|
+
- "pymdown-extensions"
|
|
40
|
+
- "check-wheel-contents"
|
|
41
|
+
- "twine"
|
|
42
|
+
- "commitizen"
|
|
43
|
+
- "prek"
|
|
20
44
|
groups:
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
|
|
24
|
-
# and how they are grouped in the uv configuration.
|
|
25
|
-
# Dependencies that match the patterns will be grouped together in the same PR.
|
|
26
|
-
testing:
|
|
45
|
+
# Keep the dev-only dependency update churn lower by checking it monthly,
|
|
46
|
+
# while still keeping the largest dev tool groups focused.
|
|
47
|
+
dev-tooling:
|
|
27
48
|
patterns:
|
|
28
49
|
- "pytest*"
|
|
29
50
|
- "coverage"
|
|
30
51
|
- "cryptography"
|
|
31
52
|
- "deepdiff"
|
|
32
53
|
- "xkcdpass"
|
|
33
|
-
linting:
|
|
34
|
-
patterns:
|
|
35
54
|
- "bandit"
|
|
36
55
|
- "black"
|
|
37
56
|
- "codespell"
|
|
@@ -41,7 +60,7 @@ updates:
|
|
|
41
60
|
documentation:
|
|
42
61
|
patterns:
|
|
43
62
|
- "markdown*"
|
|
44
|
-
- "
|
|
63
|
+
- "zensical*"
|
|
45
64
|
- "pygments"
|
|
46
65
|
- "pymdown-extensions"
|
|
47
66
|
release-tools:
|
|
@@ -62,18 +62,7 @@ jobs:
|
|
|
62
62
|
# Manual Trigger Inputs (from workflow_dispatch)
|
|
63
63
|
MANUAL_RELEASE_TAG: ${{ inputs.manual_tag }}
|
|
64
64
|
MANUAL_UPSTREAM_RUN_ID: ${{ inputs.override_run_id }}
|
|
65
|
-
run: uv run release gh-workflow-check
|
|
66
|
-
|
|
67
|
-
# TODO: Remove this job when all the release jobs have been migrated
|
|
68
|
-
# to consume build artifacts from Main workflow instead of rebuilding.
|
|
69
|
-
build-release-artifacts:
|
|
70
|
-
name: Build release artifacts
|
|
71
|
-
if: ${{ needs.prep-release.outputs.is_valid_release == 'true' }}
|
|
72
|
-
needs:
|
|
73
|
-
- prep-release
|
|
74
|
-
uses: ./.github/workflows/build.yml
|
|
75
|
-
with:
|
|
76
|
-
BRANCH_REF: ${{ needs.prep-release.outputs.semver_tag }}
|
|
65
|
+
run: uv run glf-dev release gh-workflow-check
|
|
77
66
|
|
|
78
67
|
publish-docs:
|
|
79
68
|
name: Publish Docs
|
|
@@ -95,7 +84,7 @@ jobs:
|
|
|
95
84
|
name: docs-site
|
|
96
85
|
path: site
|
|
97
86
|
- name: Deploy 🚀
|
|
98
|
-
uses: JamesIves/github-pages-deploy-action@v4.
|
|
87
|
+
uses: JamesIves/github-pages-deploy-action@v4.9.0
|
|
99
88
|
with:
|
|
100
89
|
branch: gh-pages
|
|
101
90
|
folder: site
|
|
@@ -120,7 +109,6 @@ jobs:
|
|
|
120
109
|
if: ${{ needs.prep-release.outputs.is_valid_release == 'true' }}
|
|
121
110
|
needs:
|
|
122
111
|
- prep-release
|
|
123
|
-
- build-release-artifacts
|
|
124
112
|
runs-on: ubuntu-latest
|
|
125
113
|
environment:
|
|
126
114
|
name: pypi
|
|
@@ -140,22 +128,22 @@ jobs:
|
|
|
140
128
|
- name: Setup Python ${{ env.UV_PYTHON }} and install dependencies
|
|
141
129
|
run: |
|
|
142
130
|
uv sync --frozen --no-dev --group release
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
131
|
+
- name: Download built package
|
|
132
|
+
uses: actions/download-artifact@v8
|
|
133
|
+
with:
|
|
134
|
+
run-id: ${{ needs.prep-release.outputs.target_run_id }}
|
|
135
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
136
|
+
name: package-dist
|
|
137
|
+
path: dist
|
|
149
138
|
- name: Publish to PyPI
|
|
150
139
|
run: |
|
|
151
|
-
uv run --no-sync release pypi
|
|
140
|
+
uv run --no-sync glf-dev release pypi
|
|
152
141
|
|
|
153
142
|
publish-to-ghcr:
|
|
154
143
|
name: Publish GHCR
|
|
155
144
|
if: ${{ needs.prep-release.outputs.is_valid_release == 'true' }}
|
|
156
145
|
needs:
|
|
157
146
|
- prep-release
|
|
158
|
-
- build-release-artifacts
|
|
159
147
|
- publish-to-pypi
|
|
160
148
|
runs-on: ubuntu-latest
|
|
161
149
|
steps:
|
|
@@ -28,8 +28,8 @@ jobs:
|
|
|
28
28
|
run: uv sync --frozen --no-dev --group release
|
|
29
29
|
- name: Build and verify the package
|
|
30
30
|
run: |
|
|
31
|
-
uv run --no-sync package build
|
|
32
|
-
uv run --no-sync package verify
|
|
31
|
+
uv run --no-sync glf-dev package build
|
|
32
|
+
uv run --no-sync glf-dev package verify
|
|
33
33
|
- name: Upload package distribution
|
|
34
34
|
uses: actions/upload-artifact@v7
|
|
35
35
|
with:
|
|
@@ -52,7 +52,7 @@ jobs:
|
|
|
52
52
|
- name: Install dependencies
|
|
53
53
|
run: uv sync --frozen --no-dev --group docs
|
|
54
54
|
- name: Build documentation
|
|
55
|
-
run: uv run --no-sync docs build
|
|
55
|
+
run: uv run --no-sync glf-dev docs build
|
|
56
56
|
- name: Upload docs site
|
|
57
57
|
uses: actions/upload-artifact@v7
|
|
58
58
|
with:
|
|
@@ -77,7 +77,7 @@ jobs:
|
|
|
77
77
|
# uses: actions/setup-example@v1
|
|
78
78
|
|
|
79
79
|
- name: Initialize CodeQL
|
|
80
|
-
uses: github/codeql-action/init@v4
|
|
80
|
+
uses: github/codeql-action/init@v4.38.0
|
|
81
81
|
with:
|
|
82
82
|
languages: ${{ matrix.language }}
|
|
83
83
|
build-mode: ${{ matrix.build-mode }}
|
|
@@ -89,6 +89,6 @@ jobs:
|
|
|
89
89
|
# queries: security-extended,security-and-quality
|
|
90
90
|
|
|
91
91
|
- name: Perform CodeQL Analysis
|
|
92
|
-
uses: github/codeql-action/analyze@v4
|
|
92
|
+
uses: github/codeql-action/analyze@v4.38.0
|
|
93
93
|
with:
|
|
94
94
|
category: "/language:${{matrix.language}}"
|
|
@@ -48,9 +48,9 @@ jobs:
|
|
|
48
48
|
- name: Run ${{ matrix.check }}
|
|
49
49
|
run: |
|
|
50
50
|
if [ "${{ matrix.check }}" == "black" ]; then
|
|
51
|
-
uv run --no-sync qa lint black --check .
|
|
51
|
+
uv run --no-sync glf-dev qa lint black --check .
|
|
52
52
|
elif [ "${{ matrix.check }}" == "mypy" ]; then
|
|
53
|
-
uv run --no-sync qa lint mypy .
|
|
53
|
+
uv run --no-sync glf-dev qa lint mypy .
|
|
54
54
|
elif [ "${{ matrix.check }}" == "bandit" ]; then
|
|
55
|
-
uv run --no-sync qa lint bandit .
|
|
55
|
+
uv run --no-sync glf-dev qa lint bandit .
|
|
56
56
|
fi
|
|
@@ -39,9 +39,9 @@ jobs:
|
|
|
39
39
|
- name: Install dependencies
|
|
40
40
|
run: uv sync --frozen --no-dev --group test
|
|
41
41
|
- name: Start GitLab (${{ matrix.flavor }}) in docker
|
|
42
|
-
run: uv run --no-sync gitlab-local up --gitlab-flavor ${{ matrix.flavor }}
|
|
42
|
+
run: uv run --no-sync glf-dev gitlab-local up --gitlab-flavor ${{ matrix.flavor }}
|
|
43
43
|
- name: Run Standard acceptance tests for ${{ matrix.flavor }} flavor
|
|
44
|
-
run: uv run --no-sync qa test tests/acceptance/standard --cov=. --cov-report=xml --durations=0 --reruns 3 --reruns-delay 10 --log-cli-level=WARNING
|
|
44
|
+
run: uv run --no-sync glf-dev qa test tests/acceptance/standard --cov=. --cov-report=xml --durations=0 --reruns 3 --reruns-delay 10 --log-cli-level=WARNING
|
|
45
45
|
- name: Save PR metadata
|
|
46
46
|
env:
|
|
47
47
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
@@ -80,9 +80,9 @@ jobs:
|
|
|
80
80
|
- name: Start GitLab (${{ matrix.tier }}) in docker
|
|
81
81
|
env:
|
|
82
82
|
GITLAB_EE_LICENSE: "${{ matrix.tier == 'premium' && secrets.GITLAB_EE_LICENSE || secrets.GITLAB_EE_ULTIMATE_LICENSE }}"
|
|
83
|
-
run: uv run --no-sync gitlab-local up
|
|
83
|
+
run: uv run --no-sync glf-dev gitlab-local up
|
|
84
84
|
- name: Run acceptance Tests for ${{ matrix.tier }} features
|
|
85
|
-
run: uv run --no-sync qa test tests/acceptance/${{ matrix.tier }} --cov=. --cov-report=xml --durations=0 --reruns 3 --reruns-delay 10 --log-cli-level=WARNING
|
|
85
|
+
run: uv run --no-sync glf-dev qa test tests/acceptance/${{ matrix.tier }} --cov=. --cov-report=xml --durations=0 --reruns 3 --reruns-delay 10 --log-cli-level=WARNING
|
|
86
86
|
- name: Save PR metadata
|
|
87
87
|
env:
|
|
88
88
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
@@ -32,7 +32,7 @@ jobs:
|
|
|
32
32
|
- name: Install dependencies
|
|
33
33
|
run: uv sync --frozen --no-dev --group test
|
|
34
34
|
- name: Run unit tests
|
|
35
|
-
run: uv run --no-sync qa test tests/unit --cov=. --cov-report=xml --log-cli-level=WARNING
|
|
35
|
+
run: uv run --no-sync glf-dev qa test tests/unit --cov=. --cov-report=xml --log-cli-level=WARNING
|
|
36
36
|
- name: Save PR metadata
|
|
37
37
|
env:
|
|
38
38
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.14.6
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: gitlabform
|
|
3
|
-
Version: 6.2.
|
|
3
|
+
Version: 6.2.2
|
|
4
4
|
Summary: 🏗 Specialized configuration as a code tool for GitLab projects, groups and more using hierarchical configuration written in YAML
|
|
5
5
|
Project-URL: Homepage, https://gitlabform.github.io/gitlabform/
|
|
6
6
|
Project-URL: Repository, https://github.com/gitlabform/gitlabform.git
|
|
@@ -19,14 +19,14 @@ Classifier: Operating System :: POSIX :: Linux
|
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.14
|
|
20
20
|
Classifier: Topic :: Software Development :: Version Control :: Git
|
|
21
21
|
Requires-Python: >=3.12.0
|
|
22
|
-
Requires-Dist: certifi==2026.
|
|
22
|
+
Requires-Dist: certifi==2026.7.22
|
|
23
23
|
Requires-Dist: cli-ui==0.19.0
|
|
24
24
|
Requires-Dist: jinja2==3.1.6
|
|
25
25
|
Requires-Dist: luddite==1.0.4
|
|
26
26
|
Requires-Dist: markupsafe==3.0.3
|
|
27
27
|
Requires-Dist: mergedeep==1.3.4
|
|
28
|
-
Requires-Dist: packaging==26.
|
|
29
|
-
Requires-Dist: python-gitlab[graphql]==8.
|
|
28
|
+
Requires-Dist: packaging==26.3
|
|
29
|
+
Requires-Dist: python-gitlab[graphql]==8.5.0
|
|
30
30
|
Requires-Dist: requests==2.34.2
|
|
31
31
|
Requires-Dist: rich==15.0.0
|
|
32
32
|
Requires-Dist: ruamel-yaml==0.19.1
|
|
@@ -7,17 +7,17 @@ def docs_serve(extra_args: list[str] | None = None):
|
|
|
7
7
|
"""Starts the local documentation development server with live-reloading.
|
|
8
8
|
|
|
9
9
|
Args:
|
|
10
|
-
extra_args: Additional arguments for
|
|
10
|
+
extra_args: Additional arguments for zensical serve.
|
|
11
11
|
"""
|
|
12
|
-
cmd = ["uv", "run", "
|
|
13
|
-
run_command(cmd, "Starting
|
|
12
|
+
cmd = ["uv", "run", "zensical", "serve"] + (extra_args or [])
|
|
13
|
+
run_command(cmd, "Starting Zensical development server")
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
def docs_build(extra_args: list[str] | None = None):
|
|
17
17
|
"""Generates the static documentation site.
|
|
18
18
|
|
|
19
19
|
Args:
|
|
20
|
-
extra_args: Additional arguments for
|
|
20
|
+
extra_args: Additional arguments for zensical build.
|
|
21
21
|
"""
|
|
22
|
-
cmd = ["uv", "run", "
|
|
22
|
+
cmd = ["uv", "run", "zensical", "build", "--clean", "--strict"] + (extra_args or [])
|
|
23
23
|
run_command(cmd, "Building static documentation site")
|
|
@@ -219,7 +219,7 @@ echo ''
|
|
|
219
219
|
|
|
220
220
|
# Provide instructions for stopping and starting GitLab
|
|
221
221
|
cecho b 'To stop and delete the GitLab container, run:'
|
|
222
|
-
cecho y 'uv run gitlab-local down'
|
|
222
|
+
cecho y 'uv run glf-dev gitlab-local down'
|
|
223
223
|
echo ''
|
|
224
224
|
cecho b 'Alternatively to do it manually, you can run:'
|
|
225
225
|
cecho r "docker stop --time=30 gitlab"
|
|
@@ -232,5 +232,5 @@ cecho b '(This is the only way to make GitLab in Docker stable.)'
|
|
|
232
232
|
echo ''
|
|
233
233
|
|
|
234
234
|
cecho b 'To start the acceptance tests, run:'
|
|
235
|
-
cecho y 'uv run qa test tests/acceptance'
|
|
235
|
+
cecho y 'uv run glf-dev qa test tests/acceptance'
|
|
236
236
|
echo ''
|
|
@@ -2,12 +2,23 @@
|
|
|
2
2
|
"""Central entry point and CLI facade for the GitLabForm development toolkit."""
|
|
3
3
|
|
|
4
4
|
import argparse
|
|
5
|
-
import os
|
|
6
5
|
import sys
|
|
7
6
|
from pathlib import Path
|
|
7
|
+
from dev.common import REPO_ROOT
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def _ensure_repo_context() -> None:
|
|
11
|
+
"""Fail fast unless the command is being run from inside the gitlabform repo."""
|
|
12
|
+
cwd = Path.cwd().resolve()
|
|
13
|
+
repo_root = REPO_ROOT.resolve()
|
|
14
|
+
if cwd == repo_root or repo_root in cwd.parents:
|
|
15
|
+
return
|
|
16
|
+
|
|
17
|
+
print("glf-dev: this command must be run from inside the gitlabform repository.", file=sys.stderr)
|
|
18
|
+
print(f"Current directory: {cwd}", file=sys.stderr)
|
|
19
|
+
print(f"Expected repo root: {repo_root}", file=sys.stderr)
|
|
20
|
+
raise SystemExit(2)
|
|
8
21
|
|
|
9
|
-
# Add the project root to sys.path to allow running this script directly
|
|
10
|
-
sys.path.append(str(Path(__file__).resolve().parent.parent))
|
|
11
22
|
|
|
12
23
|
from dev.docs import docs_build, docs_serve
|
|
13
24
|
from dev.env import clean as run_clean_logic, setup as run_setup_logic
|
|
@@ -67,16 +78,16 @@ def _add_docs_subcommands(subparsers):
|
|
|
67
78
|
serve = subparsers.add_parser(
|
|
68
79
|
"serve",
|
|
69
80
|
help="Start the documentation server with live-reload",
|
|
70
|
-
description="Start the
|
|
81
|
+
description="Start the Zensical live-reload server. Provides an interactive preview of the documentation at http://localhost:8000.",
|
|
71
82
|
)
|
|
72
|
-
serve.add_argument("extra_args", nargs=argparse.REMAINDER, help="Additional arguments for
|
|
83
|
+
serve.add_argument("extra_args", nargs=argparse.REMAINDER, help="Additional arguments for zensical serve")
|
|
73
84
|
|
|
74
85
|
build_p = subparsers.add_parser(
|
|
75
86
|
"build",
|
|
76
87
|
help="Generate the static documentation site",
|
|
77
88
|
description="Compile the markdown documentation into a static HTML site ready for deployment.",
|
|
78
89
|
)
|
|
79
|
-
build_p.add_argument("extra_args", nargs=argparse.REMAINDER, help="Additional arguments for
|
|
90
|
+
build_p.add_argument("extra_args", nargs=argparse.REMAINDER, help="Additional arguments for zensical build")
|
|
80
91
|
|
|
81
92
|
|
|
82
93
|
def _dispatch_docs(args):
|
|
@@ -246,67 +257,9 @@ def _dispatch_qa(args):
|
|
|
246
257
|
run_test_logic(args.extra_args)
|
|
247
258
|
|
|
248
259
|
|
|
249
|
-
# --- Domain Shortcut Entry Points ---
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
def _domain_entrypoint(prog, description, setup_fn, dispatch_fn):
|
|
253
|
-
"""Generic helper for domain-specific entry points."""
|
|
254
|
-
parser = argparse.ArgumentParser(prog=prog, description=description)
|
|
255
|
-
setup_fn(parser.add_subparsers(dest="command"))
|
|
256
|
-
args, extra = parser.parse_known_args()
|
|
257
|
-
|
|
258
|
-
# Combine unknown arguments (like flags) with the 'extra_args' list if it exists.
|
|
259
|
-
# This allows passthrough commands like 'up' to receive flags like --help.
|
|
260
|
-
if hasattr(args, "extra_args") and extra:
|
|
261
|
-
if args.extra_args is None:
|
|
262
|
-
args.extra_args = extra
|
|
263
|
-
else:
|
|
264
|
-
args.extra_args = extra + args.extra_args
|
|
265
|
-
|
|
266
|
-
if not args.command:
|
|
267
|
-
parser.print_help()
|
|
268
|
-
sys.exit(0)
|
|
269
|
-
|
|
270
|
-
dispatch_fn(args)
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
def workspace():
|
|
274
|
-
"""Shortcut for 'uv run workspace'."""
|
|
275
|
-
_domain_entrypoint("workspace", DESC_WORKSPACE, _add_workspace_subcommands, _dispatch_workspace)
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
def qa():
|
|
279
|
-
"""Shortcut for 'uv run qa'."""
|
|
280
|
-
_domain_entrypoint("qa", DESC_QA, _add_qa_subcommands, _dispatch_qa)
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
def docs():
|
|
284
|
-
"""Shortcut for 'uv run docs'."""
|
|
285
|
-
_domain_entrypoint("docs", DESC_DOCS, _add_docs_subcommands, _dispatch_docs)
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
def package():
|
|
289
|
-
"""Shortcut for 'uv run package'."""
|
|
290
|
-
_domain_entrypoint("package", DESC_PACKAGE, _add_package_subcommands, _dispatch_package)
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
def docker():
|
|
294
|
-
"""Shortcut for 'uv run docker'."""
|
|
295
|
-
_domain_entrypoint("docker", DESC_DOCKER, _add_docker_subcommands, _dispatch_docker)
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
def release():
|
|
299
|
-
"""Shortcut for 'uv run release'."""
|
|
300
|
-
_domain_entrypoint("release", DESC_RELEASE, _add_release_subcommands, _dispatch_release)
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
def gitlab_local():
|
|
304
|
-
"""Shortcut for 'uv run gitlab-local'. Provides orchestration for the local GitLab instance."""
|
|
305
|
-
_domain_entrypoint("gitlab-local", DESC_INFRA, _add_infra_subcommands, _dispatch_infra)
|
|
306
|
-
|
|
307
|
-
|
|
308
260
|
def main():
|
|
309
261
|
"""Main entry point for direct script execution."""
|
|
262
|
+
_ensure_repo_context()
|
|
310
263
|
parser = argparse.ArgumentParser(description="GitLabForm Development Toolkit")
|
|
311
264
|
subparsers = parser.add_subparsers(dest="domain", help="Task domains")
|
|
312
265
|
|
|
@@ -335,7 +288,7 @@ def main():
|
|
|
335
288
|
args, extra = parser.parse_known_args()
|
|
336
289
|
|
|
337
290
|
# Combine unknown arguments (flags) with the 'extra_args' list if it exists.
|
|
338
|
-
# This applies when running via the main 'dev' entrypoint.
|
|
291
|
+
# This applies when running via the main 'glf-dev' entrypoint.
|
|
339
292
|
if hasattr(args, "extra_args") and extra:
|
|
340
293
|
if args.extra_args is None:
|
|
341
294
|
args.extra_args = extra
|
|
@@ -29,7 +29,7 @@ def python_verify(extra_args: list[str] | None = None):
|
|
|
29
29
|
# 1. Ensure build artifacts exist
|
|
30
30
|
if not dist_path.exists() or not any(dist_path.iterdir()):
|
|
31
31
|
logger.error(f"[bold red]❌ Build directory '{dist_path}/' is missing or empty.[/bold red]")
|
|
32
|
-
logger.info("Hint: Run [bold cyan]uv run package build[/bold cyan] first.")
|
|
32
|
+
logger.info("Hint: Run [bold cyan]uv run glf-dev package build[/bold cyan] first.")
|
|
33
33
|
sys.exit(1)
|
|
34
34
|
|
|
35
35
|
wheels = [str(p) for p in dist_path.glob("*.whl")]
|
|
@@ -143,11 +143,11 @@ def gh_workflow_check(extra_args: list[str] | None = None):
|
|
|
143
143
|
|
|
144
144
|
LOCAL TESTING:
|
|
145
145
|
1. Manual Trigger:
|
|
146
|
-
GH_TOKEN="your_pat" EVENT="workflow_dispatch" REPO="owner/repo" MANUAL_RELEASE_TAG="v1.0.0" MANUAL_UPSTREAM_RUN_ID="12345" uv run release gh-workflow-check
|
|
146
|
+
GH_TOKEN="your_pat" EVENT="workflow_dispatch" REPO="owner/repo" MANUAL_RELEASE_TAG="v1.0.0" MANUAL_UPSTREAM_RUN_ID="12345" uv run glf-dev release gh-workflow-check
|
|
147
147
|
|
|
148
148
|
2. Automated Trigger:
|
|
149
149
|
GH_TOKEN="your_pat" EVENT="workflow_run" REPO="owner/repo" CONCLUSION="success" \
|
|
150
|
-
SHA="$(git rev-parse HEAD)" AUTOMATED_UPSTREAM_RUN_ID="67890" uv run release gh-workflow-check
|
|
150
|
+
SHA="$(git rev-parse HEAD)" AUTOMATED_UPSTREAM_RUN_ID="67890" uv run glf-dev release gh-workflow-check
|
|
151
151
|
"""
|
|
152
152
|
event_name = os.environ.get("EVENT")
|
|
153
153
|
repo = os.environ.get("REPO")
|
|
@@ -6,6 +6,55 @@ For details on how to migrate between major versions, please refer to the [upgra
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## 6.2.2
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* prevent KeyError when using --output with application settings [#1384](https://github.com/gitlabform/gitlabform/pull/1384). ([rickbrouwer](https://github.com/rickbrouwer))
|
|
14
|
+
|
|
15
|
+
### Documentation
|
|
16
|
+
|
|
17
|
+
* use renamed secret_push_protection_enabled setting [#1395](https://github.com/gitlabform/gitlabform/pull/1395). ([rickbrouwer](https://github.com/rickbrouwer))
|
|
18
|
+
* fix Snyk badge and add ti&m logo [#1371](https://github.com/gitlabform/gitlabform/pull/1371). ([marcelstoer](https://github.com/marcelstoer))
|
|
19
|
+
|
|
20
|
+
### Refactors
|
|
21
|
+
|
|
22
|
+
* migrate badges processor to python-gitlab [#1388](https://github.com/gitlabform/gitlabform/pull/1388). ([rickbrouwer](https://github.com/rickbrouwer))
|
|
23
|
+
* centralize dry-run diff in AbstractProcessor [#1353](https://github.com/gitlabform/gitlabform/pull/1353). ([rickbrouwer](https://github.com/rickbrouwer))
|
|
24
|
+
|
|
25
|
+
### Build
|
|
26
|
+
|
|
27
|
+
* migrate documentation from MkDocs Material to Zensical [#1372](https://github.com/gitlabform/gitlabform/pull/1372). ([rickbrouwer](https://github.com/rickbrouwer))
|
|
28
|
+
* replace gitlabform development toolkit shortcuts with one entrypoint [#1409](https://github.com/gitlabform/gitlabform/pull/1409). ([amimas](https://github.com/amimas))
|
|
29
|
+
|
|
30
|
+
### Chores
|
|
31
|
+
|
|
32
|
+
* update default PR reviewers [#1375](https://github.com/gitlabform/gitlabform/pull/1375). ([rickbrouwer](https://github.com/rickbrouwer))
|
|
33
|
+
|
|
34
|
+
### Dependencies
|
|
35
|
+
|
|
36
|
+
* Update various dependencies to newer versions.
|
|
37
|
+
|
|
38
|
+
Thanks to all the contributors of this release!
|
|
39
|
+
|
|
40
|
+
## 6.2.1
|
|
41
|
+
|
|
42
|
+
### Bug Fixes
|
|
43
|
+
|
|
44
|
+
* catch GitlabCreateError and GitlabDeleteError when modifying files on protected branches [#1361](https://github.com/gitlabform/gitlabform/pull/1361). ([haijeploeg](https://github.com/haijeploeg))
|
|
45
|
+
* fix merge_request_approval_rules to stop redundant edit calls on unchanged rules [#1350](https://github.com/gitlabform/gitlabform/pull/1350). ([rickbrouwer](https://github.com/rickbrouwer))
|
|
46
|
+
* use add instead of delete in commit message for new files to reflect what actually happened in commit history [#1363](https://github.com/gitlabform/gitlabform/pull/1363). ([rickbrouwer](https://github.com/rickbrouwer))
|
|
47
|
+
|
|
48
|
+
### Build
|
|
49
|
+
|
|
50
|
+
* consume package artifact from main workflow in pypi release [#1327](https://github.com/gitlabform/gitlabform/pull/1327). ([amimas](https://github.com/amimas))
|
|
51
|
+
|
|
52
|
+
### Dependencies
|
|
53
|
+
|
|
54
|
+
* Update various dependencies to newer versions.
|
|
55
|
+
|
|
56
|
+
Thanks to all the contributors of this release!
|
|
57
|
+
|
|
9
58
|
## 6.2.0
|
|
10
59
|
|
|
11
60
|
### Features
|
|
@@ -6,6 +6,13 @@ Please do:
|
|
|
6
6
|
* add tests along with the new code that prove that it works:
|
|
7
7
|
* when adding/changing non-trivial logic please add unit tests,
|
|
8
8
|
* for all bug fixes and new features using GitLab API please add acceptance tests
|
|
9
|
+
* use INFO as the base log level, DEBUG only if you might expose sensitive information (such as raw API request/responses)
|
|
10
|
+
* [Logging levels information](https://docs.python.org/3/howto/logging.html#logging-levels)
|
|
11
|
+
* by default we log WARNING and above issues; INFO is logged when specifying the `--verbose` argument in CLI
|
|
12
|
+
* diff output is emitted via a dedicated `DIFF` log level and does not require `--verbose`
|
|
13
|
+
* use the `logging` module for logging, do not use `print` statements
|
|
14
|
+
* we have a custom log level for "diff" messages, used only in the `difference_logger`
|
|
15
|
+
* we have a custom log level "notice" used only in `gitlabform.__init__` in order to output version information and the total numbers of Projects/Groups processed
|
|
9
16
|
* add or update the docs for new features,
|
|
10
17
|
* use [pre-commit](https://pre-commit.com) to automatically reformat your code and run linters before committing,
|
|
11
18
|
* squash your commits (unless there is a reason not to),
|