RepoAuditor 0.2.78__tar.gz → 0.2.80__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.
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.gitignore +6 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/DEVELOPMENT.md +6 -3
- {repoauditor-0.2.78 → repoauditor-0.2.80}/PKG-INFO +3 -2
- {repoauditor-0.2.78 → repoauditor-0.2.80}/README.md +1 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/pyproject.toml +3 -3
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/CommandLineProcessor.py +35 -16
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/EntryPoint.py +3 -3
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/CommunityStandards/Impl/ExistsRequirementImpl.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/AllowDeletions.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/AllowMainlineForcePushes.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/DismissStalePullRequestApprovals.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/DoNotAllowBypassSettings.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/EnsureStatusChecks.py +3 -3
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireApprovalMostRecentPush.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireCodeOwnerReview.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireConversationResolution.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireLinearHistory.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequirePullRequests.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireSignedCommits.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireStatusChecksToPass.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireUpToDateBranches.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/DefaultBranchRequirements/Protected.py +3 -3
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/Impl/EnableRequirementImpl.py +3 -2
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/Impl/ValueRequirementImpl.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequirePullRequests.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireSignedCommits.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireStatusChecks.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/AutoMerge.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DeleteHeadBranches.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DependabotSecurityUpdates.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Description.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/MergeCommit.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Private.py +3 -3
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/RebaseMergeCommit.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SecretScanning.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SecretScanningPushProtection.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SquashCommitMerge.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SuggestUpdatingPullRequestBranches.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportDiscussions.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportIssues.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportProjects.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportWikis.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/TemplateRepository.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/WebCommitSignoff.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Requirement.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/__init__.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/CommandLineProcessor_UnitTest.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubEnterprise_EndToEndTest.py +30 -30
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/EnsureStatusChecks_UnitTest.py +8 -8
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireApprovalMostRecentPush_UnitTest.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireCodeOwnerReview_UnitTest.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireUpToDateBranches_UnitTest.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/DefaultBranchQueryRequirements/Protected_UnitTest.py +3 -3
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/EnableRulesetRequirementImpl_UnitTest.py +10 -10
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/RulesetRequirements_UnitTest.py +11 -11
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/StandardQueryRequirements/DependabotSecurityUpdates_UnitTest.py +7 -2
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/StandardQueryRequirements/Description_UnitTest.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/StandardQueryRequirements/Private_UnitTest.py +6 -6
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/StandardQueryRequirements/SecretScanningPushProtection_UnitTest.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/StandardQueryRequirements/SecretScanning_UnitTest.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/StandardQueryRequirements/SquashMergeCommitMessage_UnitTest.py +9 -8
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/ValueRequrementImpl_UnitTest.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHub_EndToEndTest.py +33 -33
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Requirement_UnitTest.py +2 -1
- {repoauditor-0.2.78 → repoauditor-0.2.80}/uv.lock +4 -4
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.copier-answers.yml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.github/CODEOWNERS +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.github/ISSUE_TEMPLATE/custom.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.github/actions/release_impl/action.yml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.github/pull_request_template.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.github/release_sources.yaml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.github/workflows/CICD.yml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.github/workflows/CICD_impl.yml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.github/workflows/EndToEnd.yml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.github/workflows/codeql.yml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.pre-commit-config.yaml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/.python-version +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/CODE_OF_CONDUCT.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/CONTRIBUTING.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/GOVERNANCE.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/LICENSE +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/MAINTAINERS.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/SECURITY.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/default_config.yaml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/minisign_key.pub +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/AutoGitSemVer.yaml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Display.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/ExecuteModules.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Impl/ParallelSequentialProcessor.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Impl/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Module.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugin.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/CommunityStandards/CommunityStandardsQuery.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/CommunityStandards/Impl/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/CommunityStandards/Module.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/CodeOfConduct.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/CodeOwners.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/Contributing.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/IssueTemplates.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/LicenseFile.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/PullRequestTemplates.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/ReadMe.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/SecurityPolicy.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/CommunityStandards/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/CommunityStandardsPlugin.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionQuery.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/ClassicEnableRequirementImpl.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/ClassicValueRequirementImpl.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireApprovals.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/DefaultBranchQuery.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/DefaultBranchRequirements/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/Impl/Common.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/Impl/EnableRulesetRequirementImpl.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/Impl/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/Module.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/RulesetQuery.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardQuery.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DefaultBranch.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/StandardEnableRequirementImpl.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/StandardValueRequirementImpl.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/License.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/MergeCommitMessage.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SquashMergeCommitMessage.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHub/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHubBase/Module.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHubBase/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/GitHubPlugin.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Plugins/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/Query.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/src/RepoAuditor/py.typed +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/EntryPoint_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/ExecuteModules_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Module_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugin_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/CommunityStandards/CommunityStandardsQuery_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/CommunityStandards/ExistsRequirementImpl_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/CommunityStandards/GitHubCommunityStandards_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/CommunityStandards_EndToEndTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/ClassicBranchProtectionQuery_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/DismissStalePullRequestApprovals_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireApprovals_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/ClassicValueRequirementImpl_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/DefaultBranchQuery_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/GitHubModule_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/GitHubSession_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/RulsesetQuery_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/StandardQueryRequirements/License_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/StandardQueryRequirements/MergeCommitMessage_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/StandardQuery_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/GitHubModule/fixtures.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/__snapshots__/CommunityStandards_EndToEndTest.ambr +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/__snapshots__/GitHubEnterprise_EndToEndTest.ambr +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/__snapshots__/GitHub_EndToEndTest.ambr +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/conftest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Plugins/utilities.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/Query_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/__snapshots__/ExecuteModules_UnitTest.ambr +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.80}/tests/conftest.py +0 -0
|
@@ -79,7 +79,10 @@ Please follow the steps below to complete the configuration.
|
|
|
79
79
|
- Check `Require a pull request before merging`.
|
|
80
80
|
- Check `Require a pull request before merging -> Dismiss stale pull request approvals when new commits are pushed`.
|
|
81
81
|
- Check `Require a pull request before merging -> Require approval of the most recent reviewable push`.
|
|
82
|
-
-
|
|
82
|
+
- Under `Protect matching branches`
|
|
83
|
+
- Check `Require status checks to pass before merging`.
|
|
84
|
+
- Check `Require status checks to pass before merging -> Require branches to be up to date before merging`.
|
|
85
|
+
- Add the `CI+CD Workflow / Validate (ubuntu-latest, 3.13)` or an equivalent status check.
|
|
83
86
|
- Check `Require conversation resolution before merging`.
|
|
84
87
|
- Check `Require signed commits`.
|
|
85
88
|
- Check `Do not allow bypassing the above settings`.
|
|
@@ -97,7 +100,7 @@ Please follow the steps below to complete the configuration.
|
|
|
97
100
|
- Enable `Restrict deletions`
|
|
98
101
|
- Enable `Require signed commits`
|
|
99
102
|
- Enable `Require a pull request before merging` with 1 required approval.
|
|
100
|
-
- Enable `Require status checks to pass` with the `CI+CD Workflow / Validate (ubuntu-latest, 3.12)` check.
|
|
103
|
+
- Enable `Require status checks to pass` with the `CI+CD Workflow / Validate (ubuntu-latest, 3.12)` or an equivalent check.
|
|
101
104
|
- Enable `Block force pushes`.
|
|
102
105
|
- Be sure to hit `Save changes` at the end.
|
|
103
106
|
|
|
@@ -129,4 +132,4 @@ To verify that an artifact is valid, visit [the latest release](https://github.c
|
|
|
129
132
|
|
|
130
133
|
```shell
|
|
131
134
|
uv run --with py-minisign python -c "import minisign; minisign.PublicKey.from_file('minisign_key.pub').verify_file('<filename>')"
|
|
132
|
-
```
|
|
135
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: RepoAuditor
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.80
|
|
4
4
|
Summary: Add your description here
|
|
5
5
|
Project-URL: Homepage, https://github.com/gt-sse-center/RepoAuditor
|
|
6
6
|
Project-URL: Documentation, https://github.com/gt-sse-center/RepoAuditor
|
|
@@ -17,7 +17,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
19
|
Requires-Python: >=3.10
|
|
20
|
-
Requires-Dist: dbrownell-common>=0.
|
|
20
|
+
Requires-Dist: dbrownell-common>=0.16.0
|
|
21
21
|
Requires-Dist: gitpython>=3.1.44
|
|
22
22
|
Requires-Dist: pluggy>=1.5.0
|
|
23
23
|
Requires-Dist: requests>=2.32.3
|
|
@@ -148,6 +148,7 @@ uvx RepoAuditor --include GitHub \
|
|
|
148
148
|
|
|
149
149
|
The configuration (or config) file can make usage easier by recording preferences as well as facilitating sharing of enforced requirements within an organization.
|
|
150
150
|
We have provided a sample configuration file called [default_config.yaml](https://github.com/gt-sse-center/RepoAuditor/blob/main/default_config.yaml), which can be used as:
|
|
151
|
+
|
|
151
152
|
```shell
|
|
152
153
|
uvx run RepoAuditor --config default_config.yaml
|
|
153
154
|
```
|
|
@@ -121,6 +121,7 @@ uvx RepoAuditor --include GitHub \
|
|
|
121
121
|
|
|
122
122
|
The configuration (or config) file can make usage easier by recording preferences as well as facilitating sharing of enforced requirements within an organization.
|
|
123
123
|
We have provided a sample configuration file called [default_config.yaml](https://github.com/gt-sse-center/RepoAuditor/blob/main/default_config.yaml), which can be used as:
|
|
124
|
+
|
|
124
125
|
```shell
|
|
125
126
|
uvx run RepoAuditor --config default_config.yaml
|
|
126
127
|
```
|
|
@@ -7,7 +7,7 @@ authors = [
|
|
|
7
7
|
]
|
|
8
8
|
requires-python = ">= 3.10"
|
|
9
9
|
dependencies = [
|
|
10
|
-
"dbrownell-common>=0.
|
|
10
|
+
"dbrownell-common>=0.16.0",
|
|
11
11
|
"gitpython>=3.1.44",
|
|
12
12
|
"pluggy>=1.5.0",
|
|
13
13
|
"requests>=2.32.3",
|
|
@@ -36,7 +36,7 @@ Repository = "https://github.com/gt-sse-center/RepoAuditor"
|
|
|
36
36
|
|
|
37
37
|
[project.scripts]
|
|
38
38
|
RepoAuditor = "RepoAuditor:EntryPoint.app"
|
|
39
|
-
|
|
39
|
+
repoauditor = "RepoAuditor:EntryPoint.app"
|
|
40
40
|
|
|
41
41
|
[project.entry-points.RepoAuditor]
|
|
42
42
|
GitHubPlugin = "RepoAuditor.Plugins.GitHubPlugin"
|
|
@@ -61,7 +61,7 @@ dev = [
|
|
|
61
61
|
path = "src/RepoAuditor/__init__.py"
|
|
62
62
|
|
|
63
63
|
[tool.pytest.ini_options]
|
|
64
|
-
addopts = "--verbose -vv --capture=no --cov=RepoAuditor --cov-fail-under=95.0"
|
|
64
|
+
addopts = "--verbose -vv --capture=no --cov=RepoAuditor --cov-fail-under=95.0 --cov-report html --cov-report term --cov-report xml:coverage.xml"
|
|
65
65
|
python_files = [
|
|
66
66
|
"**/*Test.py",
|
|
67
67
|
]
|
|
@@ -144,31 +144,50 @@ class CommandLineProcessor:
|
|
|
144
144
|
# Requirement-level args
|
|
145
145
|
for query in module.queries:
|
|
146
146
|
for requirement in query.requirements:
|
|
147
|
-
for key, value in requirement.GetDynamicArgDefinitions().items():
|
|
148
|
-
dynamic_arg_definitions[
|
|
149
|
-
f"{module.name}{argument_separator}{requirement.name}{argument_separator}{key}"
|
|
150
|
-
] = value
|
|
147
|
+
for key, value in requirement.GetDynamicArgDefinitions(argument_separator).items():
|
|
148
|
+
dynamic_arg_definitions[f"{module.name}{argument_separator}{key}"] = value
|
|
151
149
|
|
|
152
150
|
# Now we process the definitions to get the dynamic arguments
|
|
153
151
|
dynamic_args: dict[str, dict[str, Any]] = {}
|
|
154
152
|
|
|
155
|
-
num_acceptable_dynamic_args_parts = 2
|
|
156
|
-
|
|
157
153
|
for key, value in get_dynamic_args_func(dynamic_arg_definitions).items():
|
|
158
|
-
|
|
159
|
-
assert len(parts) >= num_acceptable_dynamic_args_parts
|
|
154
|
+
import re
|
|
160
155
|
|
|
161
|
-
|
|
162
|
-
|
|
156
|
+
pattern = rf"(?P<module>[A-Za-z]+){argument_separator}(?P<has_no>no{argument_separator})?(?P<requirement_or_arg>[A-Za-z0-9]+)(?P<value>{argument_separator}[\S]+)?"
|
|
157
|
+
groups = re.match(
|
|
158
|
+
pattern,
|
|
159
|
+
key,
|
|
160
|
+
).groupdict()
|
|
161
|
+
|
|
162
|
+
# Assert that module and requirement/arg are specified
|
|
163
|
+
assert groups["module"]
|
|
164
|
+
assert groups["requirement_or_arg"]
|
|
165
|
+
|
|
166
|
+
module_name = groups["module"]
|
|
167
|
+
requirement_or_arg = groups["requirement_or_arg"]
|
|
168
|
+
has_no = groups["has_no"]
|
|
169
|
+
|
|
170
|
+
if module_name not in module_map:
|
|
171
|
+
msg = f"'{module_name}' is not a recognized module name."
|
|
163
172
|
raise ValueError(msg)
|
|
164
173
|
|
|
165
|
-
if
|
|
166
|
-
|
|
174
|
+
# The following if-elif block works as follows:
|
|
175
|
+
# First we check if `requirement_or_arg` is all lower case. If it is, then it is a module arg, else it is a requirement.
|
|
176
|
+
# If the flag has a requirement, we first check for a value (e.g. GitHub-License-value), in which case, we assign the value.
|
|
177
|
+
# Else, we check if the flag has a `no` in it, in which case it is a boolean flag with `no`, else (finally) a `yes`.
|
|
178
|
+
if requirement_or_arg.islower():
|
|
179
|
+
dynamic_args.setdefault(module_name, {})[requirement_or_arg] = value
|
|
167
180
|
else:
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
181
|
+
if groups["value"]:
|
|
182
|
+
value_key = groups["value"][1:]
|
|
183
|
+
elif has_no:
|
|
184
|
+
value_key = "no"
|
|
185
|
+
else:
|
|
186
|
+
value_key = "yes"
|
|
187
|
+
|
|
188
|
+
dynamic_args.setdefault(module_name, {}).setdefault(None, {}).setdefault(
|
|
189
|
+
requirement_or_arg, {}
|
|
190
|
+
)[value_key] = value
|
|
172
191
|
|
|
173
192
|
return dynamic_args
|
|
174
193
|
|
|
@@ -125,10 +125,10 @@ def _HelpEpilog() -> str:
|
|
|
125
125
|
|
|
126
126
|
for query in module.queries:
|
|
127
127
|
for requirement in query.requirements:
|
|
128
|
-
for key, value in requirement.GetDynamicArgDefinitions().items():
|
|
128
|
+
for key, value in requirement.GetDynamicArgDefinitions(ARGUMENT_SEPARATOR).items():
|
|
129
129
|
requirement_arguments.append(
|
|
130
130
|
TypeInfoToString(
|
|
131
|
-
f"--{module.name}{ARGUMENT_SEPARATOR}{
|
|
131
|
+
f"--{module.name}{ARGUMENT_SEPARATOR}{key}",
|
|
132
132
|
value,
|
|
133
133
|
),
|
|
134
134
|
)
|
|
@@ -166,7 +166,7 @@ def _HelpEpilog() -> str:
|
|
|
166
166
|
|
|
167
167
|
Command Line Examples
|
|
168
168
|
=====================
|
|
169
|
-
|
|
169
|
+
RepoAuditor --include GitHub --GitHub-url https://github.com/gt-sse-center/RepoAuditor --GitHub-pat <PAT or path to file containing PAT>
|
|
170
170
|
|
|
171
171
|
""",
|
|
172
172
|
)
|
|
@@ -61,10 +61,10 @@ class ExistsRequirementImpl(Requirement):
|
|
|
61
61
|
|
|
62
62
|
# ----------------------------------------------------------------------
|
|
63
63
|
@override
|
|
64
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
64
|
+
def GetDynamicArgDefinitions(self, argument_separator: str) -> dict[str, TypeDefinitionItemType]:
|
|
65
65
|
"""Get the definitions for the arguments to this requirement."""
|
|
66
66
|
return {
|
|
67
|
-
self.dynamic_arg_name: (
|
|
67
|
+
f"{self.name}{argument_separator}{self.dynamic_arg_name}": (
|
|
68
68
|
bool,
|
|
69
69
|
typer.Option(
|
|
70
70
|
False,
|
|
@@ -22,7 +22,7 @@ class AllowDeletions(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"AllowDeletions",
|
|
24
24
|
False,
|
|
25
|
-
"
|
|
25
|
+
"yes",
|
|
26
26
|
"Rules applied to everyone including administrators",
|
|
27
27
|
"Allow deletions",
|
|
28
28
|
lambda data: data["branch_protection_data"]["allow_deletions"]["enabled"],
|
|
@@ -22,7 +22,7 @@ class AllowMainlineForcePushes(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"AllowMainlineForcePushes",
|
|
24
24
|
False,
|
|
25
|
-
"
|
|
25
|
+
"yes",
|
|
26
26
|
"Rules applied to everyone including administrators",
|
|
27
27
|
"Allow force pushes",
|
|
28
28
|
lambda data: data["branch_protection_data"]["allow_force_pushes"]["enabled"],
|
|
@@ -23,7 +23,7 @@ class DismissStalePullRequestApprovals(ClassicEnableRequirementImpl):
|
|
|
23
23
|
super().__init__(
|
|
24
24
|
"DismissStalePullRequestApprovals",
|
|
25
25
|
True,
|
|
26
|
-
"
|
|
26
|
+
"no",
|
|
27
27
|
"Protect matching branches",
|
|
28
28
|
"Require a pull request before merging -> Dismiss stale pull request approvals when new commits are pushed",
|
|
29
29
|
_GetValue,
|
|
@@ -22,7 +22,7 @@ class DoNotAllowBypassSettings(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"DoNotAllowBypassSettings",
|
|
24
24
|
True,
|
|
25
|
-
"
|
|
25
|
+
"no",
|
|
26
26
|
"Protect matching branches",
|
|
27
27
|
"Do not allow bypassing the above settings",
|
|
28
28
|
lambda data: data["branch_protection_data"]["enforce_admins"]["enabled"],
|
|
@@ -54,10 +54,10 @@ class EnsureStatusChecks(Requirement):
|
|
|
54
54
|
|
|
55
55
|
# ----------------------------------------------------------------------
|
|
56
56
|
@override
|
|
57
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
57
|
+
def GetDynamicArgDefinitions(self, argument_separator: str) -> dict[str, TypeDefinitionItemType]:
|
|
58
58
|
"""Get the definitions for the arguments to this requirement."""
|
|
59
59
|
return {
|
|
60
|
-
"
|
|
60
|
+
f"no{argument_separator}{self.name}": (
|
|
61
61
|
bool,
|
|
62
62
|
typer.Option(
|
|
63
63
|
default=False,
|
|
@@ -73,7 +73,7 @@ class EnsureStatusChecks(Requirement):
|
|
|
73
73
|
query_data: dict[str, Any],
|
|
74
74
|
requirement_args: dict[str, Any],
|
|
75
75
|
) -> Requirement.EvaluateImplResult:
|
|
76
|
-
if requirement_args["
|
|
76
|
+
if requirement_args["no"]:
|
|
77
77
|
return Requirement.EvaluateImplResult(
|
|
78
78
|
EvaluateResult.DoesNotApply,
|
|
79
79
|
"The status check requirement has been explicitly disabled.",
|
|
@@ -23,7 +23,7 @@ class RequireApprovalMostRecentPush(ClassicEnableRequirementImpl):
|
|
|
23
23
|
super().__init__(
|
|
24
24
|
"RequireApprovalMostRecentPush",
|
|
25
25
|
True,
|
|
26
|
-
"
|
|
26
|
+
"no",
|
|
27
27
|
"Protect matching branches",
|
|
28
28
|
"Require a pull request before merging -> Require approval of the most recent reviewable push",
|
|
29
29
|
_GetValue,
|
|
@@ -23,7 +23,7 @@ class RequireCodeOwnerReview(ClassicEnableRequirementImpl):
|
|
|
23
23
|
super().__init__(
|
|
24
24
|
"RequireCodeOwnerReview",
|
|
25
25
|
False,
|
|
26
|
-
"
|
|
26
|
+
"yes",
|
|
27
27
|
"Protect matching branches",
|
|
28
28
|
"Require a pull request before merging -> Require review from Code Owners",
|
|
29
29
|
_GetValue,
|
|
@@ -22,7 +22,7 @@ class RequireConversationResolution(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"RequireConversationResolution",
|
|
24
24
|
True,
|
|
25
|
-
"
|
|
25
|
+
"no",
|
|
26
26
|
"Protect matching branches",
|
|
27
27
|
"Require conversation resolution before merging",
|
|
28
28
|
lambda data: data["branch_protection_data"]["required_conversation_resolution"]["enabled"],
|
|
@@ -22,7 +22,7 @@ class RequireLinearHistory(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"RequireLinearHistory",
|
|
24
24
|
False,
|
|
25
|
-
"
|
|
25
|
+
"yes",
|
|
26
26
|
"Protect matching branches",
|
|
27
27
|
"Require linear history",
|
|
28
28
|
lambda data: data["branch_protection_data"]["required_linear_history"]["enabled"],
|
|
@@ -22,7 +22,7 @@ class RequirePullRequests(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"RequirePullRequests",
|
|
24
24
|
True,
|
|
25
|
-
"
|
|
25
|
+
"no",
|
|
26
26
|
"Protect matching branches",
|
|
27
27
|
"Require a pull request before merging",
|
|
28
28
|
lambda data: "required_pull_request_reviews" in data["branch_protection_data"],
|
|
@@ -22,7 +22,7 @@ class RequireSignedCommits(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"RequireSignedCommits",
|
|
24
24
|
True,
|
|
25
|
-
"
|
|
25
|
+
"no",
|
|
26
26
|
"Protect matching branches",
|
|
27
27
|
"Require signed commits",
|
|
28
28
|
lambda data: data["branch_protection_data"]["required_signatures"]["enabled"],
|
|
@@ -22,7 +22,7 @@ class RequireStatusChecksToPass(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"RequireStatusChecksToPass",
|
|
24
24
|
True,
|
|
25
|
-
"
|
|
25
|
+
"no",
|
|
26
26
|
"Protect matching branches",
|
|
27
27
|
"Require status checks to pass before merging",
|
|
28
28
|
lambda data: "required_status_checks" in data["branch_protection_data"],
|
|
@@ -23,7 +23,7 @@ class RequireUpToDateBranches(ClassicEnableRequirementImpl):
|
|
|
23
23
|
super().__init__(
|
|
24
24
|
"RequireUpToDateBranches",
|
|
25
25
|
True,
|
|
26
|
-
"
|
|
26
|
+
"no",
|
|
27
27
|
"Protect matching branches",
|
|
28
28
|
"Require status checks to pass before merging -> Require branches to be up to date before merging",
|
|
29
29
|
_GetValue,
|
|
@@ -53,10 +53,10 @@ class Protected(Requirement):
|
|
|
53
53
|
|
|
54
54
|
# ----------------------------------------------------------------------
|
|
55
55
|
@override
|
|
56
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
56
|
+
def GetDynamicArgDefinitions(self, argument_separator: str) -> dict[str, TypeDefinitionItemType]:
|
|
57
57
|
"""Get the definitions for the arguments to this requirement."""
|
|
58
58
|
return {
|
|
59
|
-
"
|
|
59
|
+
f"no{argument_separator}{self.name}": (
|
|
60
60
|
bool,
|
|
61
61
|
typer.Option(
|
|
62
62
|
default=False,
|
|
@@ -78,7 +78,7 @@ class Protected(Requirement):
|
|
|
78
78
|
if is_protected is None:
|
|
79
79
|
return CreateIncompleteDataResult()
|
|
80
80
|
|
|
81
|
-
if requirement_args["
|
|
81
|
+
if requirement_args["no"]:
|
|
82
82
|
expected_value = False
|
|
83
83
|
provide_rationale = False
|
|
84
84
|
else:
|
|
@@ -60,10 +60,11 @@ class EnableRequirementImpl(Requirement):
|
|
|
60
60
|
|
|
61
61
|
# ----------------------------------------------------------------------
|
|
62
62
|
@override
|
|
63
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
63
|
+
def GetDynamicArgDefinitions(self, argument_separator: str) -> dict[str, TypeDefinitionItemType]:
|
|
64
64
|
"""Get the definitions for the arguments to this requirement."""
|
|
65
|
+
arg = f"no{argument_separator}{self.name}" if self.dynamic_arg_name == "no" else f"{self.name}"
|
|
65
66
|
return {
|
|
66
|
-
|
|
67
|
+
arg: (
|
|
67
68
|
bool,
|
|
68
69
|
typer.Option(
|
|
69
70
|
False,
|
|
@@ -65,10 +65,10 @@ class ValueRequirementImpl(Requirement):
|
|
|
65
65
|
|
|
66
66
|
# ----------------------------------------------------------------------
|
|
67
67
|
@override
|
|
68
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
68
|
+
def GetDynamicArgDefinitions(self, argument_separator: str) -> dict[str, TypeDefinitionItemType]:
|
|
69
69
|
"""Get the definitions for the arguments to this requirement."""
|
|
70
70
|
return {
|
|
71
|
-
"value": (
|
|
71
|
+
f"{self.name}{argument_separator}value": (
|
|
72
72
|
str,
|
|
73
73
|
typer.Option(
|
|
74
74
|
self.default_value,
|
|
@@ -16,7 +16,7 @@ class RequirePullRequests(EnableRulesetRequirementImpl):
|
|
|
16
16
|
super().__init__(
|
|
17
17
|
name="RequirePullRequestsRule",
|
|
18
18
|
enabled_by_default=True,
|
|
19
|
-
dynamic_arg_name="
|
|
19
|
+
dynamic_arg_name="no",
|
|
20
20
|
github_ruleset_type="pull_request",
|
|
21
21
|
github_ruleset_value="Require a pull request before merging",
|
|
22
22
|
get_configuration_value_func=lambda rule: rule.get("type", "") == "pull_request",
|
|
@@ -16,7 +16,7 @@ class RequireSignedCommits(EnableRulesetRequirementImpl):
|
|
|
16
16
|
super().__init__(
|
|
17
17
|
name="RequireSignedCommitsRule",
|
|
18
18
|
enabled_by_default=True,
|
|
19
|
-
dynamic_arg_name="
|
|
19
|
+
dynamic_arg_name="no",
|
|
20
20
|
github_ruleset_type="required_signatures",
|
|
21
21
|
github_ruleset_value="Require signed commits",
|
|
22
22
|
get_configuration_value_func=lambda rule: rule.get("type", "") == "required_signatures",
|
|
@@ -16,7 +16,7 @@ class RequireStatusChecks(EnableRulesetRequirementImpl):
|
|
|
16
16
|
super().__init__(
|
|
17
17
|
name="RequireStatusChecksRule",
|
|
18
18
|
enabled_by_default=True,
|
|
19
|
-
dynamic_arg_name="
|
|
19
|
+
dynamic_arg_name="no",
|
|
20
20
|
github_ruleset_type="required_status_checks",
|
|
21
21
|
github_ruleset_value="Require status checks to pass",
|
|
22
22
|
get_configuration_value_func=lambda rule: rule.get("type", "") == "required_status_checks",
|
|
@@ -51,10 +51,10 @@ class Description(Requirement):
|
|
|
51
51
|
|
|
52
52
|
# ----------------------------------------------------------------------
|
|
53
53
|
@override
|
|
54
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
54
|
+
def GetDynamicArgDefinitions(self, argument_separator: str) -> dict[str, TypeDefinitionItemType]:
|
|
55
55
|
"""Get the definitions for the arguments to this requirement."""
|
|
56
56
|
return {
|
|
57
|
-
"allow-empty": (
|
|
57
|
+
f"{self.name}{argument_separator}allow-empty": (
|
|
58
58
|
bool,
|
|
59
59
|
typer.Option(
|
|
60
60
|
default=False,
|
|
@@ -52,10 +52,10 @@ class Private(Requirement):
|
|
|
52
52
|
|
|
53
53
|
# ----------------------------------------------------------------------
|
|
54
54
|
@override
|
|
55
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
55
|
+
def GetDynamicArgDefinitions(self, _: str) -> dict[str, TypeDefinitionItemType]:
|
|
56
56
|
"""Get the definitions for the arguments to this requirement."""
|
|
57
57
|
return {
|
|
58
|
-
"
|
|
58
|
+
f"{self.name}": (
|
|
59
59
|
bool,
|
|
60
60
|
typer.Option(
|
|
61
61
|
default=False,
|
|
@@ -71,7 +71,7 @@ class Private(Requirement):
|
|
|
71
71
|
query_data: dict[str, Any],
|
|
72
72
|
requirement_args: dict[str, Any],
|
|
73
73
|
) -> Requirement.EvaluateImplResult:
|
|
74
|
-
expect_private = requirement_args.get("
|
|
74
|
+
expect_private = requirement_args.get("yes", False)
|
|
75
75
|
query_data["__expected_visibility"] = "private" if expect_private else "public"
|
|
76
76
|
|
|
77
77
|
result = query_data["standard"].get("private", None)
|