RepoAuditor 0.2.67__tar.gz → 0.2.69__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. repoauditor-0.2.69/DEVELOPMENT.md +132 -0
  2. {repoauditor-0.2.67 → repoauditor-0.2.69}/PKG-INFO +47 -24
  3. {repoauditor-0.2.67 → repoauditor-0.2.69}/README.md +46 -23
  4. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/AllowDeletions.py +1 -1
  5. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/AllowMainlineForcePushes.py +1 -1
  6. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/DismissStalePullRequestApprovals.py +1 -1
  7. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/DoNotAllowBypassSettings.py +1 -1
  8. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/EnsureStatusChecks.py +2 -2
  9. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireApprovalMostRecentPush.py +1 -1
  10. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireCodeOwnerReview.py +1 -1
  11. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireConversationResolution.py +1 -1
  12. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireLinearHistory.py +1 -1
  13. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequirePullRequests.py +1 -1
  14. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireSignedCommits.py +1 -1
  15. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireStatusChecksToPass.py +1 -1
  16. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireUpToDateBranches.py +1 -1
  17. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/DefaultBranchRequirements/Protected.py +2 -2
  18. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/AutoMerge.py +1 -1
  19. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DeleteHeadBranches.py +1 -1
  20. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/MergeCommit.py +1 -1
  21. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Private.py +2 -2
  22. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/RebaseMergeCommit.py +1 -1
  23. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SquashCommitMerge.py +1 -1
  24. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SuggestUpdatingPullRequestBranches.py +1 -1
  25. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportDiscussions.py +1 -1
  26. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportIssues.py +1 -1
  27. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportProjects.py +1 -1
  28. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportWikis.py +1 -1
  29. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/TemplateRepository.py +1 -1
  30. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/WebCommitSignoff.py +1 -1
  31. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/__init__.py +1 -1
  32. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubEnterprise_EndToEndTest.py +30 -30
  33. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/DismissStalePullRequestApprovals_UnitTest.py +1 -1
  34. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/EnsureStatusChecks_UnitTest.py +6 -6
  35. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireApprovalMostRecentPush_UnitTest.py +1 -1
  36. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireCodeOwnerReview_UnitTest.py +2 -2
  37. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireUpToDateBranches_UnitTest.py +2 -2
  38. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/DefaultBranchQueryRequirements/Protected_UnitTest.py +3 -3
  39. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/StandardQueryRequirements/Private_UnitTest.py +4 -4
  40. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHub_EndToEndTest.py +27 -27
  41. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/__snapshots__/GitHub_EndToEndTest.ambr +18 -138
  42. repoauditor-0.2.67/DEVELOPMENT.md +0 -38
  43. {repoauditor-0.2.67 → repoauditor-0.2.69}/.copier-answers.yml +0 -0
  44. {repoauditor-0.2.67 → repoauditor-0.2.69}/.github/CODEOWNERS +0 -0
  45. {repoauditor-0.2.67 → repoauditor-0.2.69}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  46. {repoauditor-0.2.67 → repoauditor-0.2.69}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  47. {repoauditor-0.2.67 → repoauditor-0.2.69}/.github/ISSUE_TEMPLATE/custom.md +0 -0
  48. {repoauditor-0.2.67 → repoauditor-0.2.69}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  49. {repoauditor-0.2.67 → repoauditor-0.2.69}/.github/actions/release_impl/action.yml +0 -0
  50. {repoauditor-0.2.67 → repoauditor-0.2.69}/.github/pull_request_template.md +0 -0
  51. {repoauditor-0.2.67 → repoauditor-0.2.69}/.github/release_sources.yaml +0 -0
  52. {repoauditor-0.2.67 → repoauditor-0.2.69}/.github/workflows/CICD.yml +0 -0
  53. {repoauditor-0.2.67 → repoauditor-0.2.69}/.github/workflows/CICD_impl.yml +0 -0
  54. {repoauditor-0.2.67 → repoauditor-0.2.69}/.github/workflows/EndToEnd.yml +0 -0
  55. {repoauditor-0.2.67 → repoauditor-0.2.69}/.github/workflows/codeql.yml +0 -0
  56. {repoauditor-0.2.67 → repoauditor-0.2.69}/.gitignore +0 -0
  57. {repoauditor-0.2.67 → repoauditor-0.2.69}/.pre-commit-config.yaml +0 -0
  58. {repoauditor-0.2.67 → repoauditor-0.2.69}/.python-version +0 -0
  59. {repoauditor-0.2.67 → repoauditor-0.2.69}/CODE_OF_CONDUCT.md +0 -0
  60. {repoauditor-0.2.67 → repoauditor-0.2.69}/CONTRIBUTING.md +0 -0
  61. {repoauditor-0.2.67 → repoauditor-0.2.69}/GOVERNANCE.md +0 -0
  62. {repoauditor-0.2.67 → repoauditor-0.2.69}/LICENSE +0 -0
  63. {repoauditor-0.2.67 → repoauditor-0.2.69}/MAINTAINERS.md +0 -0
  64. {repoauditor-0.2.67 → repoauditor-0.2.69}/SECURITY.md +0 -0
  65. {repoauditor-0.2.67 → repoauditor-0.2.69}/default_config.yaml +0 -0
  66. {repoauditor-0.2.67 → repoauditor-0.2.69}/minisign_key.pub +0 -0
  67. {repoauditor-0.2.67 → repoauditor-0.2.69}/pyproject.toml +0 -0
  68. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/AutoGitSemVer.yaml +0 -0
  69. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/CommandLineProcessor.py +0 -0
  70. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Display.py +0 -0
  71. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/EntryPoint.py +0 -0
  72. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/ExecuteModules.py +0 -0
  73. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Impl/ParallelSequentialProcessor.py +0 -0
  74. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Impl/__init__.py +0 -0
  75. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Module.py +0 -0
  76. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugin.py +0 -0
  77. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/CommunityStandards/CommunityStandardsQuery.py +0 -0
  78. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/CommunityStandards/Impl/ExistsRequirementImpl.py +0 -0
  79. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/CommunityStandards/Impl/__init__.py +0 -0
  80. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/CommunityStandards/Module.py +0 -0
  81. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/CodeOfConduct.py +0 -0
  82. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/CodeOwners.py +0 -0
  83. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/Contributing.py +0 -0
  84. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/IssueTemplates.py +0 -0
  85. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/LicenseFile.py +0 -0
  86. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/PullRequestTemplates.py +0 -0
  87. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/ReadMe.py +0 -0
  88. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/SecurityPolicy.py +0 -0
  89. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/__init__.py +0 -0
  90. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/CommunityStandards/__init__.py +0 -0
  91. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/CommunityStandardsPlugin.py +0 -0
  92. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionQuery.py +0 -0
  93. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/ClassicEnableRequirementImpl.py +0 -0
  94. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/ClassicValueRequirementImpl.py +0 -0
  95. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/__init__.py +0 -0
  96. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireApprovals.py +0 -0
  97. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/__init__.py +0 -0
  98. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/DefaultBranchQuery.py +0 -0
  99. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/DefaultBranchRequirements/__init__.py +0 -0
  100. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/Impl/Common.py +0 -0
  101. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/Impl/EnableRequirementImpl.py +0 -0
  102. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/Impl/EnableRulesetRequirementImpl.py +0 -0
  103. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/Impl/ValueRequirementImpl.py +0 -0
  104. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/Impl/__init__.py +0 -0
  105. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/Module.py +0 -0
  106. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/RulesetQuery.py +0 -0
  107. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequirePullRequests.py +0 -0
  108. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireSignedCommits.py +0 -0
  109. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireStatusChecks.py +0 -0
  110. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/__init__.py +0 -0
  111. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardQuery.py +0 -0
  112. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DefaultBranch.py +0 -0
  113. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DependabotSecurityUpdates.py +0 -0
  114. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Description.py +0 -0
  115. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/StandardEnableRequirementImpl.py +0 -0
  116. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/StandardValueRequirementImpl.py +0 -0
  117. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/__init__.py +0 -0
  118. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/License.py +0 -0
  119. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/MergeCommitMessage.py +0 -0
  120. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SecretScanning.py +0 -0
  121. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SecretScanningPushProtection.py +0 -0
  122. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SquashMergeCommitMessage.py +0 -0
  123. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/__init__.py +0 -0
  124. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHub/__init__.py +0 -0
  125. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHubBase/Module.py +0 -0
  126. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHubBase/__init__.py +0 -0
  127. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/GitHubPlugin.py +0 -0
  128. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Plugins/__init__.py +0 -0
  129. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Query.py +0 -0
  130. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/Requirement.py +0 -0
  131. {repoauditor-0.2.67 → repoauditor-0.2.69}/src/RepoAuditor/py.typed +0 -0
  132. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/CommandLineProcessor_UnitTest.py +0 -0
  133. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/EntryPoint_UnitTest.py +0 -0
  134. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/ExecuteModules_UnitTest.py +0 -0
  135. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Module_UnitTest.py +0 -0
  136. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugin_UnitTest.py +0 -0
  137. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/CommunityStandards/CommunityStandardsQuery_UnitTest.py +0 -0
  138. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/CommunityStandards/ExistsRequirementImpl_UnitTest.py +0 -0
  139. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/CommunityStandards/GitHubCommunityStandards_UnitTest.py +0 -0
  140. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/CommunityStandards_EndToEndTest.py +0 -0
  141. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/ClassicBranchProtectionQuery_UnitTest.py +0 -0
  142. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireApprovals_UnitTest.py +0 -0
  143. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/ClassicValueRequirementImpl_UnitTest.py +0 -0
  144. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/DefaultBranchQuery_UnitTest.py +0 -0
  145. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/EnableRulesetRequirementImpl_UnitTest.py +0 -0
  146. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/GitHubModule_UnitTest.py +0 -0
  147. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/GitHubSession_UnitTest.py +0 -0
  148. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/RulesetRequirements_UnitTest.py +0 -0
  149. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/RulsesetQuery_UnitTest.py +0 -0
  150. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/StandardQueryRequirements/DependabotSecurityUpdates_UnitTest.py +0 -0
  151. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/StandardQueryRequirements/Description_UnitTest.py +0 -0
  152. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/StandardQueryRequirements/License_UnitTest.py +0 -0
  153. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/StandardQueryRequirements/MergeCommitMessage_UnitTest.py +0 -0
  154. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/StandardQueryRequirements/SecretScanningPushProtection_UnitTest.py +0 -0
  155. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/StandardQueryRequirements/SecretScanning_UnitTest.py +0 -0
  156. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/StandardQueryRequirements/SquashMergeCommitMessage_UnitTest.py +0 -0
  157. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/StandardQuery_UnitTest.py +0 -0
  158. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/ValueRequrementImpl_UnitTest.py +0 -0
  159. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/GitHubModule/fixtures.py +0 -0
  160. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/__snapshots__/CommunityStandards_EndToEndTest.ambr +0 -0
  161. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/__snapshots__/GitHubEnterprise_EndToEndTest.ambr +0 -0
  162. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/conftest.py +0 -0
  163. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Plugins/utilities.py +0 -0
  164. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Query_UnitTest.py +0 -0
  165. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/Requirement_UnitTest.py +0 -0
  166. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/__init__.py +0 -0
  167. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/__snapshots__/ExecuteModules_UnitTest.ambr +0 -0
  168. {repoauditor-0.2.67 → repoauditor-0.2.69}/tests/conftest.py +0 -0
  169. {repoauditor-0.2.67 → repoauditor-0.2.69}/uv.lock +0 -0
@@ -0,0 +1,132 @@
1
+ # DEVELOPMENT GUIDE
2
+
3
+ ## Fork setup
4
+
5
+ | Step | Command Line | Additional Information |
6
+ | --- | --- | --- |
7
+ | 1. Fork the repository | -- | https://github.com/gt-sse-center/RepoAuditor/fork |
8
+ | 2. Create a PAT for your forked repository | -- | See [PAT setup instructions](README.md#personal-access-token-pat) |
9
+ | 3. Update your forked repository settings to match RepoAuditor's defaults | -- | -- |
10
+
11
+ ## Local Development
12
+
13
+ ### Enlistment
14
+
15
+ | Step | Command Line | Additional Information |
16
+ | --- | --- | --- |
17
+ | 1. Clone the repository locally. | `git clone https://github.com/gt-sse-center/RepoAuditor` | https://git-scm.com/docs/git-clone |
18
+ | 2. Install [uv](https://github.com/astral-sh/uv). | `curl -LsSf https://astral.sh/uv/install.sh \| sh` on macOS and Linux or <br/>`powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 \| iex"` on Windows | https://docs.astral.sh |
19
+ | 3. Install dependencies. | `uv sync` | https://docs.astral.sh/uv/concepts/projects/sync |
20
+ | 4. Install [pre-commit](https://pre-commit.com/) hooks | `uv run pre-commit install` | https://pre-commit.com/#1-install-pre-commit |
21
+ | 5. If you wish to test against an enterprise server, add a remote named `enterprise` with the corresponding URL | E.g. `git remote add enterprise git@github.gatech.edu:sse-center/RepoAuditor.git` | |
22
+
23
+ ### Setup
24
+
25
+ #### Basic Setup
26
+
27
+ Please follow these steps to allow for local testing.
28
+
29
+ - Fork the `RepoAuditor` repository. We will test against the fork since your generated PAT is applicable only for the fork.
30
+ - Create a PAT file as detailed in the [README](https://github.com/gt-sse-center/RepoAuditor/blob/main/README.md#personal-access-token-pat).
31
+ - Set your forked repository as the `origin` remote (this should already be the case but it's good to verify).
32
+
33
+ ```sh
34
+ git remote add origin git@github.com:<github-username>/RepoAuditor.git
35
+ ```
36
+
37
+ - Update the URL in `default_config.yaml` to point to your fork.
38
+ - You should now be able to run the following and see valid output. There will be errors, which we will tackle next.
39
+
40
+ ```sh
41
+ uv run RepoAuditor --config default_config.yaml --GitHub-pat PAT.txt
42
+ ```
43
+
44
+ #### Local Testing
45
+
46
+ You can now run local tests from the project root directory with
47
+
48
+ ```sh
49
+ uv run pytest -k 'not EndToEndTest'
50
+ ```
51
+
52
+ #### End-To-End Testing
53
+
54
+ To include tests against your `RepoAuditor` fork for comprehensive end-to-end testing, you can run:
55
+
56
+ ```sh
57
+ uv run pytest
58
+ ```
59
+
60
+ In order to run end-to-end tests, which make calls to the GitHub API, you need to configure your forked repository, else you will see a large number of test failures.
61
+
62
+ Please follow the steps below to complete the configuration.
63
+
64
+ - On the `General` settings page
65
+ - Under `Features`
66
+ - Check `Wikis`.
67
+ - Check `Issues`.
68
+ - Check `Projects`.
69
+ - Under `Pull Requests`
70
+ - With `Allow merge commits`, set the `Default commit message` to `Pull request title`.
71
+ - Uncheck `Allow squash merging`.
72
+ - Uncheck `Allow rebase merging`.
73
+ - Check `Allow auto-merge`.
74
+ - Check `Automatically delete head branches`.
75
+
76
+ - On the `Branches` settings page
77
+ - Click `Add classic branch protection rule`.
78
+ - Under `Branch name pattern`, type in `main`.
79
+ - Check `Require a pull request before merging`.
80
+ - Check `Require a pull request before merging -> Dismiss stale pull request approvals when new commits are pushed`.
81
+ - Check `Require a pull request before merging -> Require approval of the most recent reviewable push`.
82
+ - Check `Require status checks to pass before merging`, and add the `CI+CD Workflow / Validate (ubuntu-latest, 3.13)` or equivalent status check.
83
+ - Check `Require conversation resolution before merging`.
84
+ - Check `Require signed commits`.
85
+ - Check `Do not allow bypassing the above settings`.
86
+
87
+ - On the `Advanced Security` settings page
88
+ - Enable `Dependabot security updates`.
89
+
90
+ - Go to the `Actions` tab
91
+ - Enable Workflows by clicking on `I understand my workflows, go ahead and enable them`.
92
+ - Run the `CI+CD` workflow. You will be asked to enable it, please do so.
93
+ - In the `Run workflow` dropdown to the right, click the `Run workflow` button. This should cause the action to run, don't worry if it fails, it is only needed for a check below.
94
+
95
+ - On the `Rules -> Rulesets` settings page, create a new branch ruleset called `Protect Main`:
96
+ - Under `Target branches`, click `Add target -> Include by pattern` and type in `main`. Finalize by clicking `Add Inclusion pattern`.
97
+ - Enable `Restrict deletions`
98
+ - Enable `Require signed commits`
99
+ - 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.
101
+ - Disable `Block force pushes`.
102
+ - Be sure to hit `Save changes` at the end.
103
+
104
+ ### Development Activities
105
+
106
+ | Activity | Command Line | Description | Used During Local Development | Invoked by Continuous Integration |
107
+ | --- | --- | --- | :-: | :-: |
108
+ | Code Formatting | `uv run ruff format` or<br>`uv run ruff format --check` | Format source code using [ruff](https://github.com/astral-sh/ruff) based on settings in `pyproject.toml`. | :white_check_mark: | :white_check_mark: (via [pre-commit](https://pre-commit.com/)) |
109
+ | Sort Imports | `uv run ruff check --fix --select I` | Sort imports in source files. | :white_check_mark: | |
110
+ | Static Code Analysis | `uv run ruff check` | Validate source code using [ruff](https://github.com/astral-sh/ruff) based on settings in `pyproject.toml`. | :white_check_mark: | :white_check_mark: (via [pre-commit](https://pre-commit.com/)) |
111
+ | Run pre-commit scripts | `uv run pre-commit run` | Run [pre-commit](https://pre-commit.com/) scripts based on settings in `.pre-commit-config.yaml`. | :white_check_mark: | :white_check_mark: |
112
+ | Automated Testing | `uv run pytest` or<br/>`uv run pytest --no-cov` | Run automated tests using [pytest](https://docs.pytest.org/) and extract code coverage using [coverage](https://coverage.readthedocs.io/) based on settings in `pyproject.toml`. | :white_check_mark: | :white_check_mark: |
113
+ | Semantic Version Generation | `uv run python -m AutoGitSemVer.scripts.UpdatePythonVersion ./src/RepoAuditor/__init__.py ./src` | Generate a new [Semantic Version](https://semver.org/) based on git commits using [AutoGitSemVer](https://github.com/davidbrownell/AutoGitSemVer). Version information is stored in `./src/RepoAuditor/__init__.py`. | | :white_check_mark: |
114
+ | Python Package Creation | `uv build` | Create a python package using [uv](https://github.com/astral-sh/uv) based on settings in `pyproject.toml`. Generated packages will be written to `./dist`. | | :white_check_mark: |
115
+ | Sign Artifacts | `uv run --with py-minisign python -c "import minisign; minisign.SecretKey.from_file(<temp_filename>).sign_file(<filename>, trusted_comment='<package_name> v<package_version>', drop_signature=True)` | Signs artifacts using [py-minisign](https://github.com/x13a/py-minisign). Note that the private key is stored as a [GitHub secret](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions). | | :white_check_mark: |
116
+ | Python Package Publishing | `uv publish` | Publish a python package to [PyPi](https://pypi.org/) using [uv](https://github.com/astral-sh/uv) based on settings in `pyproject.toml`. | | :white_check_mark: |
117
+
118
+ ### Contributing Changes
119
+
120
+ Pull requests are preferred, since they are specific. For more about how to create a pull request, see [this guide](https://help.github.com/articles/using-pull-requests/).
121
+
122
+ We recommend creating different branches for different (logical) changes, and creating a pull request into the `main` branch when you're done. For more information on creating branches, please see [this GitHub guide](https://help.github.com/articles/creating-and-deleting-branches-within-your-repository/).
123
+
124
+ ### Verifying Signed Artifacts
125
+
126
+ Artifacts are signed and validated using [py-minisign](https://github.com/x13a/py-minisign) and the public key in the file `./minisign_key.pub`.
127
+
128
+ To verify that an artifact is valid, visit [the latest release](https://github.com/gt-sse-center/RepoAuditor/releases/latest) and download the `.minisign` signature file that corresponds to the artifact, then run the following command, replacing `<filename>` with the name of the artifact to be verified:
129
+
130
+ ```shell
131
+ uv run --with py-minisign python -c "import minisign; minisign.PublicKey.from_file('minisign_key.pub').verify_file('<filename>')"
132
+ ```
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: RepoAuditor
3
- Version: 0.2.67
3
+ Version: 0.2.69
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
@@ -25,6 +25,8 @@ Requires-Dist: typer-config[yaml]>=1.4.2
25
25
  Requires-Dist: typer>=0.15.3
26
26
  Description-Content-Type: text/markdown
27
27
 
28
+ # RepoAuditor - README
29
+
28
30
  **Project:**
29
31
  [![License](https://img.shields.io/github/license/gt-sse-center/RepoAuditor?color=dark-green)](https://github.com/gt-sse-center/RepoAuditor/blob/master/LICENSE)
30
32
 
@@ -42,21 +44,28 @@ Description-Content-Type: text/markdown
42
44
  <!-- Content above this delimiter will be copied to the generated README.md file. DO NOT REMOVE THIS COMMENT, as it will cause regeneration to fail. -->
43
45
 
44
46
  ## Contents
47
+
45
48
  - [Installation](#installation)
46
49
  - [Overview](#overview)
47
50
  - [How to use RepoAuditor](#how-to-use-repoauditor)
48
- - [Personal Access Token](#personal-access-token)
51
+ - [Personal Access Token](#personal-access-token-pat)
49
52
  - [Example Usage](#example-usage)
53
+ - [Config File](#config-file)
50
54
  - [Development](#development)
51
- - [Verifying Signed Artifacts](#verifying-signed-artifacts)
52
55
  - [Additional Information](#additional-information)
53
56
  - [License](#license)
54
57
 
55
58
  ## Installation
56
59
 
57
- You can install `RepoAuditor` via `uv` or `pip`.
60
+ We recommend using [uv](https://docs.astral.sh/uv/#uv) since it can install `RepoAuditor` as a tool via `uvx` into a sandbox environment for quick use.
61
+ This lets you directly run `RepoAuditor`.
62
+
63
+ ```sh
64
+ uvx RepoAuditor
65
+ ```
58
66
 
59
- We recommend using [uv](https://docs.astral.sh/uv/#uv) since `RepoAuditor` uses `uv` to create and manage a virtual environment.
67
+ Alternatively, yuou can install `RepoAuditor` via `uv` or `pip`.
68
+ `uv` is preferred to `pip` since it creates and manages a virtual environment.
60
69
 
61
70
  | Installation Method | Command |
62
71
  | --- | --- |
@@ -70,28 +79,27 @@ We recommend using [uv](https://docs.astral.sh/uv/#uv) since `RepoAuditor` uses
70
79
  <!-- Content below this delimiter will be copied to the generated README.md file. DO NOT REMOVE THIS COMMENT, as it will cause regeneration to fail. -->
71
80
 
72
81
  Once installed, you can invoke the following to verify if `RepoAuditor` is installed correctly:
82
+
73
83
  ```shell
74
- uv run repo_auditor --version
84
+ uvx RepoAuditor --version
75
85
  ```
86
+
76
87
  and you should see something like
88
+
77
89
  ```shell
78
90
  RepoAuditor vX.X.X
79
91
  ```
80
92
 
81
93
  To get a list of command line options, you can run
82
- ```shell
83
- uv run repo_auditor --help
84
- ```
85
94
 
86
- `RepoAuditor` accepts both a set of flags as well as a configuratin YAML file. We have provided a sample configuration file called `default_config.yaml`, which can be used as:
87
95
  ```shell
88
- uv run repo_auditor --config default_config.yaml
96
+ uvx RepoAuditor --help
89
97
  ```
90
98
 
91
99
  ### Personal Access Token (PAT)
92
100
 
93
101
  The most common use case for `RepoAuditor` would be to audit a GitHub repository.
94
- In order to allow `RepoAuditor` to read the repository, you first need to generate a Personal Access Token or PAT.
102
+ In order to allow `RepoAuditor` to read the repository, you first need to generate a Personal Access Token or **PAT**.
95
103
 
96
104
  Please refer to the [GitHub documentation on Personal Access Tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) for details about a `Fine-grained PAT` which we will be using.
97
105
 
@@ -103,39 +111,53 @@ To generate the Fine-grained PAT, we perform the following steps:
103
111
  4. Set an appropriate expiration date.
104
112
  5. Under `Repository Access`, select `All repositories`.
105
113
  6. For permissions, we need to go to `Repository permissions`.
106
- 7. Enable Read-Write access to `Contents`, and Read access to `Administration`, `Secret Scanning` and `Dependabot Alerts`.
114
+ 7. Enable the following permissions:
115
+ - Read-Write access to `Contents`.
116
+ - Read access to `Administration` and `Secret scanning alerts`.
107
117
  8. Click on `Generate token`.
108
118
  9. Copy the generated string. This is your PAT.
119
+ 10. Save the PAT to a convenient location on your machine (such as your hime directory `~/`) in the file `PAT.txt`.
109
120
 
110
- After obtaining the PAT, you can save it in a file (e.g. `PAT`) which `RepoAuditor` can read on operation.
121
+ The path to the `PAT.txt` will be passed into `RepoAuditor`. E.g.
122
+
123
+ ```shell
124
+ uvx RepoAuditor --GitHub-pat ~/PAT.txt
125
+ ```
111
126
 
112
127
  ### Example Usage
113
128
 
114
129
  With the above generated PAT file, you can now run `RepoAuditor` on your GitHub repository.
115
- As an example, we will use the [python-helloworld](https://github.com/dbarnett/python-helloworld) repo.
116
130
 
117
- **NOTE** You need to fork the repository since your default PAT only has access to repos under your account.
131
+ As a general example, we will use the [python-helloworld](https://github.com/dbarnett/python-helloworld) repository.
132
+
133
+ > **NOTE** You need to fork the repository since your default PAT only has access to repos under your account.
118
134
 
119
135
  To run `RepoAuditor`, we can enter the following in the command-line:
136
+
120
137
  ```shell
121
- uv run repo_auditor --include GitHub --GitHub-url https://github.com/<username>/python-helloworld --GitHub-pat PAT
138
+ uvx RepoAuditor --include GitHub \
139
+ --GitHub-url https://github.com/<username>/python-helloworld \
140
+ --GitHub-pat ~/PAT.txt
122
141
  ```
123
142
 
124
143
  `RepoAuditor` will generate a series of messages describing all the issues in the repository, along with the rationale behind them and the steps for resolution.
125
144
 
126
- ## Development
127
- Please visit [Contributing](https://github.com/gt-sse-center/RepoAuditor/blob/main/CONTRIBUTING.md) and [Development](https://github.com/gt-sse-center/RepoAuditor/blob/main/DEVELOPMENT.md) for information on contributing to this project.
128
-
129
- ### Verifying Signed Artifacts
130
- Artifacts are signed and validated using [py-minisign](https://github.com/x13a/py-minisign) and the public key in the file `./minisign_key.pub`.
145
+ ### Config File
131
146
 
132
- To verify that an artifact is valid, visit [the latest release](https://github.com/gt-sse-center/RepoAuditor/releases/latest) and download the `.minisign` signature file that corresponds to the artifact, then run the following command, replacing `<filename>` with the name of the artifact to be verified:
147
+ `RepoAuditor` accepts both a set of flags as well as a configuratin YAML file.
133
148
 
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
+ 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:
134
151
  ```shell
135
- uv run --with py-minisign python -c "import minisign; minisign.PublicKey.from_file('minisign_key.pub').verify_file('<filename>')"
152
+ uvx run RepoAuditor --config default_config.yaml
136
153
  ```
137
154
 
155
+ ## Development
156
+
157
+ Please visit [Contributing](https://github.com/gt-sse-center/RepoAuditor/blob/main/CONTRIBUTING.md) and [Development](https://github.com/gt-sse-center/RepoAuditor/blob/main/DEVELOPMENT.md) for information on contributing to this project.
158
+
138
159
  ## Additional Information
160
+
139
161
  Additional information can be found at these locations.
140
162
 
141
163
  | Title | Document | Description |
@@ -148,4 +170,5 @@ Additional information can be found at these locations.
148
170
  | Security | [SECURITY.md](https://github.com/gt-sse-center/RepoAuditor/blob/main/SECURITY.md) | Information about how to privately report security issues associated with this project. |
149
171
 
150
172
  ## License
173
+
151
174
  RepoAuditor is licensed under the <a href="https://choosealicense.com/licenses/MIT/" target="_blank">MIT</a> license.
@@ -1,3 +1,5 @@
1
+ # RepoAuditor - README
2
+
1
3
  **Project:**
2
4
  [![License](https://img.shields.io/github/license/gt-sse-center/RepoAuditor?color=dark-green)](https://github.com/gt-sse-center/RepoAuditor/blob/master/LICENSE)
3
5
 
@@ -15,21 +17,28 @@
15
17
  <!-- Content above this delimiter will be copied to the generated README.md file. DO NOT REMOVE THIS COMMENT, as it will cause regeneration to fail. -->
16
18
 
17
19
  ## Contents
20
+
18
21
  - [Installation](#installation)
19
22
  - [Overview](#overview)
20
23
  - [How to use RepoAuditor](#how-to-use-repoauditor)
21
- - [Personal Access Token](#personal-access-token)
24
+ - [Personal Access Token](#personal-access-token-pat)
22
25
  - [Example Usage](#example-usage)
26
+ - [Config File](#config-file)
23
27
  - [Development](#development)
24
- - [Verifying Signed Artifacts](#verifying-signed-artifacts)
25
28
  - [Additional Information](#additional-information)
26
29
  - [License](#license)
27
30
 
28
31
  ## Installation
29
32
 
30
- You can install `RepoAuditor` via `uv` or `pip`.
33
+ We recommend using [uv](https://docs.astral.sh/uv/#uv) since it can install `RepoAuditor` as a tool via `uvx` into a sandbox environment for quick use.
34
+ This lets you directly run `RepoAuditor`.
35
+
36
+ ```sh
37
+ uvx RepoAuditor
38
+ ```
31
39
 
32
- We recommend using [uv](https://docs.astral.sh/uv/#uv) since `RepoAuditor` uses `uv` to create and manage a virtual environment.
40
+ Alternatively, yuou can install `RepoAuditor` via `uv` or `pip`.
41
+ `uv` is preferred to `pip` since it creates and manages a virtual environment.
33
42
 
34
43
  | Installation Method | Command |
35
44
  | --- | --- |
@@ -43,28 +52,27 @@ We recommend using [uv](https://docs.astral.sh/uv/#uv) since `RepoAuditor` uses
43
52
  <!-- Content below this delimiter will be copied to the generated README.md file. DO NOT REMOVE THIS COMMENT, as it will cause regeneration to fail. -->
44
53
 
45
54
  Once installed, you can invoke the following to verify if `RepoAuditor` is installed correctly:
55
+
46
56
  ```shell
47
- uv run repo_auditor --version
57
+ uvx RepoAuditor --version
48
58
  ```
59
+
49
60
  and you should see something like
61
+
50
62
  ```shell
51
63
  RepoAuditor vX.X.X
52
64
  ```
53
65
 
54
66
  To get a list of command line options, you can run
55
- ```shell
56
- uv run repo_auditor --help
57
- ```
58
67
 
59
- `RepoAuditor` accepts both a set of flags as well as a configuratin YAML file. We have provided a sample configuration file called `default_config.yaml`, which can be used as:
60
68
  ```shell
61
- uv run repo_auditor --config default_config.yaml
69
+ uvx RepoAuditor --help
62
70
  ```
63
71
 
64
72
  ### Personal Access Token (PAT)
65
73
 
66
74
  The most common use case for `RepoAuditor` would be to audit a GitHub repository.
67
- In order to allow `RepoAuditor` to read the repository, you first need to generate a Personal Access Token or PAT.
75
+ In order to allow `RepoAuditor` to read the repository, you first need to generate a Personal Access Token or **PAT**.
68
76
 
69
77
  Please refer to the [GitHub documentation on Personal Access Tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) for details about a `Fine-grained PAT` which we will be using.
70
78
 
@@ -76,39 +84,53 @@ To generate the Fine-grained PAT, we perform the following steps:
76
84
  4. Set an appropriate expiration date.
77
85
  5. Under `Repository Access`, select `All repositories`.
78
86
  6. For permissions, we need to go to `Repository permissions`.
79
- 7. Enable Read-Write access to `Contents`, and Read access to `Administration`, `Secret Scanning` and `Dependabot Alerts`.
87
+ 7. Enable the following permissions:
88
+ - Read-Write access to `Contents`.
89
+ - Read access to `Administration` and `Secret scanning alerts`.
80
90
  8. Click on `Generate token`.
81
91
  9. Copy the generated string. This is your PAT.
92
+ 10. Save the PAT to a convenient location on your machine (such as your hime directory `~/`) in the file `PAT.txt`.
82
93
 
83
- After obtaining the PAT, you can save it in a file (e.g. `PAT`) which `RepoAuditor` can read on operation.
94
+ The path to the `PAT.txt` will be passed into `RepoAuditor`. E.g.
95
+
96
+ ```shell
97
+ uvx RepoAuditor --GitHub-pat ~/PAT.txt
98
+ ```
84
99
 
85
100
  ### Example Usage
86
101
 
87
102
  With the above generated PAT file, you can now run `RepoAuditor` on your GitHub repository.
88
- As an example, we will use the [python-helloworld](https://github.com/dbarnett/python-helloworld) repo.
89
103
 
90
- **NOTE** You need to fork the repository since your default PAT only has access to repos under your account.
104
+ As a general example, we will use the [python-helloworld](https://github.com/dbarnett/python-helloworld) repository.
105
+
106
+ > **NOTE** You need to fork the repository since your default PAT only has access to repos under your account.
91
107
 
92
108
  To run `RepoAuditor`, we can enter the following in the command-line:
109
+
93
110
  ```shell
94
- uv run repo_auditor --include GitHub --GitHub-url https://github.com/<username>/python-helloworld --GitHub-pat PAT
111
+ uvx RepoAuditor --include GitHub \
112
+ --GitHub-url https://github.com/<username>/python-helloworld \
113
+ --GitHub-pat ~/PAT.txt
95
114
  ```
96
115
 
97
116
  `RepoAuditor` will generate a series of messages describing all the issues in the repository, along with the rationale behind them and the steps for resolution.
98
117
 
99
- ## Development
100
- Please visit [Contributing](https://github.com/gt-sse-center/RepoAuditor/blob/main/CONTRIBUTING.md) and [Development](https://github.com/gt-sse-center/RepoAuditor/blob/main/DEVELOPMENT.md) for information on contributing to this project.
101
-
102
- ### Verifying Signed Artifacts
103
- Artifacts are signed and validated using [py-minisign](https://github.com/x13a/py-minisign) and the public key in the file `./minisign_key.pub`.
118
+ ### Config File
104
119
 
105
- To verify that an artifact is valid, visit [the latest release](https://github.com/gt-sse-center/RepoAuditor/releases/latest) and download the `.minisign` signature file that corresponds to the artifact, then run the following command, replacing `<filename>` with the name of the artifact to be verified:
120
+ `RepoAuditor` accepts both a set of flags as well as a configuratin YAML file.
106
121
 
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
+ 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:
107
124
  ```shell
108
- uv run --with py-minisign python -c "import minisign; minisign.PublicKey.from_file('minisign_key.pub').verify_file('<filename>')"
125
+ uvx run RepoAuditor --config default_config.yaml
109
126
  ```
110
127
 
128
+ ## Development
129
+
130
+ Please visit [Contributing](https://github.com/gt-sse-center/RepoAuditor/blob/main/CONTRIBUTING.md) and [Development](https://github.com/gt-sse-center/RepoAuditor/blob/main/DEVELOPMENT.md) for information on contributing to this project.
131
+
111
132
  ## Additional Information
133
+
112
134
  Additional information can be found at these locations.
113
135
 
114
136
  | Title | Document | Description |
@@ -121,4 +143,5 @@ Additional information can be found at these locations.
121
143
  | Security | [SECURITY.md](https://github.com/gt-sse-center/RepoAuditor/blob/main/SECURITY.md) | Information about how to privately report security issues associated with this project. |
122
144
 
123
145
  ## License
146
+
124
147
  RepoAuditor is licensed under the <a href="https://choosealicense.com/licenses/MIT/" target="_blank">MIT</a> license.
@@ -22,7 +22,7 @@ class AllowDeletions(ClassicEnableRequirementImpl):
22
22
  super().__init__(
23
23
  "AllowDeletions",
24
24
  False,
25
- "true",
25
+ "enabled",
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
- "true",
25
+ "enabled",
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
- "false",
26
+ "disabled",
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
- "false",
25
+ "disabled",
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"],
@@ -57,7 +57,7 @@ class EnsureStatusChecks(Requirement):
57
57
  def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
58
58
  """Get the definitions for the arguments to this requirement."""
59
59
  return {
60
- "disable": (
60
+ "disabled": (
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["disable"]:
76
+ if requirement_args["disabled"]:
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
- "false",
26
+ "disabled",
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
- "true",
26
+ "enabled",
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
- "false",
25
+ "disabled",
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
- "true",
25
+ "enabled",
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
- "false",
25
+ "disabled",
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
- "false",
25
+ "disabled",
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
- "false",
25
+ "disabled",
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
- "false",
26
+ "disabled",
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,
@@ -56,7 +56,7 @@ class Protected(Requirement):
56
56
  def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
57
57
  """Get the definitions for the arguments to this requirement."""
58
58
  return {
59
- "false": (
59
+ "disabled": (
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["false"]:
81
+ if requirement_args["disabled"]:
82
82
  expected_value = False
83
83
  provide_rationale = False
84
84
  else:
@@ -22,7 +22,7 @@ class AutoMerge(StandardEnableRequirementImpl):
22
22
  super().__init__(
23
23
  "AutoMerge",
24
24
  True,
25
- "false",
25
+ "disabled",
26
26
  "settings",
27
27
  "Pull Requests",
28
28
  "Allow auto-merge",
@@ -22,7 +22,7 @@ class DeleteHeadBranches(StandardEnableRequirementImpl):
22
22
  super().__init__(
23
23
  "DeleteHeadBranches",
24
24
  True,
25
- "false",
25
+ "disabled",
26
26
  "settings",
27
27
  "Pull Requests",
28
28
  "Automatically delete head branches",
@@ -22,7 +22,7 @@ class MergeCommit(StandardEnableRequirementImpl):
22
22
  super().__init__(
23
23
  "MergeCommit",
24
24
  True,
25
- "false",
25
+ "disabled",
26
26
  "settings",
27
27
  "Pull Requests",
28
28
  "Allow merge commits",