code_ownership 2.1.1 → 2.1.3

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 (265) hide show
  1. checksums.yaml +4 -4
  2. data/.cargo/config +2 -2
  3. data/Cargo.lock +9 -2
  4. data/README.md +8 -8
  5. data/ext/cargo-vendor/codeowners-0.3.3/.cargo-checksum.json +1 -0
  6. data/ext/cargo-vendor/codeowners-0.3.3/.github/CODEOWNERS +1 -0
  7. data/ext/cargo-vendor/codeowners-0.3.3/AGENTS.md +38 -0
  8. data/ext/cargo-vendor/codeowners-0.3.3/CLAUDE.md +1 -0
  9. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/Cargo.lock +8 -1
  10. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/Cargo.toml +18 -1
  11. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/README.md +11 -1
  12. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/cli.rs +9 -5
  13. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/config.rs +81 -1
  14. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/crosscheck.rs +5 -8
  15. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/ownership/codeowners_file_parser.rs +3 -3
  16. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/ownership/file_generator.rs +119 -9
  17. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/ownership/file_owner_resolver.rs +3 -1
  18. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/ownership/mapper/package_mapper.rs +2 -2
  19. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/ownership/mapper.rs +2 -2
  20. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/ownership/validator.rs +84 -17
  21. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/ownership.rs +1 -0
  22. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/project.rs +3 -0
  23. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/project_builder.rs +111 -44
  24. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/runner/api.rs +7 -6
  25. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/runner/types.rs +2 -1
  26. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/runner.rs +67 -16
  27. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/tracked_files.rs +29 -1
  28. data/ext/cargo-vendor/codeowners-0.3.3/tests/codeowners_path_test.rs +92 -0
  29. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/common/mod.rs +2 -1
  30. data/ext/cargo-vendor/codeowners-0.3.3/tests/executable_name_config_test.rs +88 -0
  31. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/custom_codeowners_path/config/code_ownership.yml +11 -0
  32. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/custom_codeowners_path/config/teams/test_team.yml +6 -0
  33. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/custom_codeowners_path/docs/CODEOWNERS +14 -0
  34. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/custom_codeowners_path/expected/CODEOWNERS +14 -0
  35. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/custom_codeowners_path/ruby/app/models/test.rb +3 -0
  36. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/custom_executable_name/.github/CODEOWNERS +10 -0
  37. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/custom_executable_name/app/foo.rb +3 -0
  38. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/custom_executable_name/config/code_ownership.yml +4 -0
  39. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/custom_executable_name/config/teams/foo.yml +5 -0
  40. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/custom_executable_name/config/teams/payments.yml +6 -0
  41. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/custom_executable_name/ruby/app/payments/foo.rb +4 -0
  42. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/default_executable_name/.github/CODEOWNERS +11 -0
  43. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/default_executable_name/app/bar.rb +3 -0
  44. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/default_executable_name/config/code_ownership.yml +5 -0
  45. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/default_executable_name/config/teams/bar.yml +5 -0
  46. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/missing_github_team/.github/CODEOWNERS +10 -0
  47. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/missing_github_team/config/code_ownership.yml +10 -0
  48. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/missing_github_team/config/teams/bad_team.yml +1 -0
  49. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/missing_github_team/config/teams/good.yml +3 -0
  50. data/ext/cargo-vendor/codeowners-0.3.3/tests/fixtures/valid_project/gems/pets/dog.rb +5 -0
  51. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/git_stage_test.rs +4 -1
  52. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/invalid_project_test.rs +30 -0
  53. data/ext/cargo-vendor/codeowners-0.3.3/tests/missing_github_team_test.rs +23 -0
  54. data/ext/cargo-vendor/codeowners-0.3.3/tests/run_config_executable_override_test.rs +98 -0
  55. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/runner_api.rs +8 -4
  56. data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/valid_project_test.rs +3 -3
  57. data/ext/cargo-vendor/codeowners-0.3.3/tests/validate_files_test.rs +378 -0
  58. data/ext/cargo-vendor/similar-2.7.0/.cargo/config.toml +2 -0
  59. data/ext/cargo-vendor/similar-2.7.0/.cargo-checksum.json +1 -0
  60. data/ext/cargo-vendor/similar-2.7.0/.cargo_vcs_info.json +6 -0
  61. data/ext/cargo-vendor/similar-2.7.0/.github/FUNDING.yml +1 -0
  62. data/ext/cargo-vendor/similar-2.7.0/.github/workflows/clippy.yml +16 -0
  63. data/ext/cargo-vendor/similar-2.7.0/.github/workflows/rustfmt.yml +16 -0
  64. data/ext/cargo-vendor/similar-2.7.0/.github/workflows/tests.yml +49 -0
  65. data/ext/cargo-vendor/similar-2.7.0/.vscode/settings.json +5 -0
  66. data/ext/cargo-vendor/similar-2.7.0/CHANGELOG.md +132 -0
  67. data/ext/cargo-vendor/similar-2.7.0/Cargo.lock +373 -0
  68. data/ext/cargo-vendor/similar-2.7.0/Cargo.lock.msrv +266 -0
  69. data/ext/cargo-vendor/similar-2.7.0/Cargo.toml +149 -0
  70. data/ext/cargo-vendor/similar-2.7.0/Cargo.toml.orig +73 -0
  71. data/ext/cargo-vendor/similar-2.7.0/LICENSE +201 -0
  72. data/ext/cargo-vendor/similar-2.7.0/Makefile +31 -0
  73. data/ext/cargo-vendor/similar-2.7.0/README.md +59 -0
  74. data/ext/cargo-vendor/similar-2.7.0/clippy.toml +1 -0
  75. data/ext/cargo-vendor/similar-2.7.0/examples/close-matches.rs +15 -0
  76. data/ext/cargo-vendor/similar-2.7.0/examples/large.rs +8 -0
  77. data/ext/cargo-vendor/similar-2.7.0/examples/nonstring.rs +13 -0
  78. data/ext/cargo-vendor/similar-2.7.0/examples/original-slices.rs +11 -0
  79. data/ext/cargo-vendor/similar-2.7.0/examples/patience.rs +48 -0
  80. data/ext/cargo-vendor/similar-2.7.0/examples/serde.rs +15 -0
  81. data/ext/cargo-vendor/similar-2.7.0/examples/terminal-inline.rs +60 -0
  82. data/ext/cargo-vendor/similar-2.7.0/examples/terminal.rs +20 -0
  83. data/ext/cargo-vendor/similar-2.7.0/examples/udiff.rs +24 -0
  84. data/ext/cargo-vendor/similar-2.7.0/scripts/wasmtime-wrapper.sh +4 -0
  85. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/capture.rs +117 -0
  86. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/compact.rs +351 -0
  87. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/hook.rs +178 -0
  88. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/lcs.rs +294 -0
  89. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/mod.rs +134 -0
  90. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/myers.rs +442 -0
  91. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/patience.rs +198 -0
  92. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/replace.rs +221 -0
  93. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__capture__capture_hook_grouping-2.snap +60 -0
  94. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__capture__capture_hook_grouping.snap +64 -0
  95. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__lcs__contiguous.snap +28 -0
  96. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__lcs__diff.snap +22 -0
  97. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__lcs__pat.snap +31 -0
  98. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__lcs__same.snap +12 -0
  99. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__myers__contiguous.snap +28 -0
  100. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__myers__deadline_reached.snap +22 -0
  101. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__myers__diff.snap +22 -0
  102. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__myers__pat.snap +31 -0
  103. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__patience__patience.snap +45 -0
  104. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__patience__patience_out_of_bounds_bug.snap +16 -0
  105. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/utils.rs +379 -0
  106. data/ext/cargo-vendor/similar-2.7.0/src/common.rs +185 -0
  107. data/ext/cargo-vendor/similar-2.7.0/src/deadline_support.rs +37 -0
  108. data/ext/cargo-vendor/similar-2.7.0/src/iter.rs +195 -0
  109. data/ext/cargo-vendor/similar-2.7.0/src/lib.rs +176 -0
  110. data/ext/cargo-vendor/similar-2.7.0/src/snapshots/similar__udiff__unified_diff.snap +25 -0
  111. data/ext/cargo-vendor/similar-2.7.0/src/snapshots/similar__udiff__unified_diff_newline_hint-2.snap +10 -0
  112. data/ext/cargo-vendor/similar-2.7.0/src/snapshots/similar__udiff__unified_diff_newline_hint.snap +11 -0
  113. data/ext/cargo-vendor/similar-2.7.0/src/text/abstraction.rs +446 -0
  114. data/ext/cargo-vendor/similar-2.7.0/src/text/inline.rs +342 -0
  115. data/ext/cargo-vendor/similar-2.7.0/src/text/mod.rs +792 -0
  116. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__captured_ops.snap +22 -0
  117. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__captured_word_ops.snap +202 -0
  118. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__char_diff.snap +39 -0
  119. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__inline__line_ops_inline.snap +126 -0
  120. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__inline__serde.snap +107 -0
  121. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__lifetimes_on_iter.snap +42 -0
  122. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__line_ops.snap +42 -0
  123. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__serde.snap +55 -0
  124. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__serde_ops.snap +38 -0
  125. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__unified_diff.snap +12 -0
  126. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__virtual_newlines.snap +32 -0
  127. data/ext/cargo-vendor/similar-2.7.0/src/text/utils.rs +55 -0
  128. data/ext/cargo-vendor/similar-2.7.0/src/types.rs +502 -0
  129. data/ext/cargo-vendor/similar-2.7.0/src/udiff.rs +359 -0
  130. data/ext/cargo-vendor/similar-2.7.0/src/utils.rs +412 -0
  131. data/ext/cargo-vendor/unicode-ident-1.0.19/.cargo-checksum.json +1 -1
  132. data/ext/code_ownership/Cargo.toml +1 -1
  133. data/ext/code_ownership/src/lib.rs +2 -2
  134. data/lib/code_ownership/private/file_path_finder.rb +19 -3
  135. data/lib/code_ownership/private/team_finder.rb +1 -2
  136. data/lib/code_ownership/version.rb +1 -1
  137. data/lib/code_ownership.rb +2 -0
  138. metadata +252 -152
  139. data/ext/cargo-vendor/codeowners-0.3.0/.cargo-checksum.json +0 -1
  140. data/ext/cargo-vendor/codeowners-0.3.0/tests/validate_files_test.rs +0 -144
  141. data/ext/cargo-vendor/unicode-ident-1.0.19/tests/fst/.gitignore +0 -1
  142. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/.github/workflows/audit.yml +0 -0
  143. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/.github/workflows/ci.yml +0 -0
  144. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/.github/workflows/dotslash-config.json +0 -0
  145. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/.rustfmt.toml +0 -0
  146. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/.rusty-hook.toml +0 -0
  147. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/dev/run_benchmarks_for_file.sh +0 -0
  148. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/dev/run_benchmarks_for_gv.sh +0 -0
  149. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/rust-toolchain.toml +0 -0
  150. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/cache/file.rs +0 -0
  151. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/cache/mod.rs +0 -0
  152. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/cache/noop.rs +0 -0
  153. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/common_test.rs +0 -0
  154. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/lib.rs +0 -0
  155. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/main.rs +0 -0
  156. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/ownership/codeowners_query.rs +0 -0
  157. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/ownership/file_owner_finder.rs +0 -0
  158. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/ownership/mapper/annotated_file_mapper.rs +0 -0
  159. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/ownership/mapper/directory_mapper.rs +0 -0
  160. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/ownership/mapper/escaper.rs +0 -0
  161. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/ownership/mapper/team_gem_mapper.rs +0 -0
  162. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/ownership/mapper/team_glob_mapper.rs +0 -0
  163. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/ownership/mapper/team_yml_mapper.rs +0 -0
  164. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/path_utils.rs +0 -0
  165. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/src/project_file_builder.rs +0 -0
  166. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/cache_test.rs +0 -0
  167. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/crosscheck_owners_test.rs +0 -0
  168. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/invalid_project/.github/CODEOWNERS +0 -0
  169. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/invalid_project/config/code_ownership.yml +0 -0
  170. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/invalid_project/config/teams/payments.yml +0 -0
  171. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/invalid_project/config/teams/payroll.yml +0 -0
  172. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/invalid_project/gems/payroll_calculator/calculator.rb +0 -0
  173. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/app/models/bank_account.rb +0 -0
  174. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/app/models/blockchain.rb +0 -0
  175. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/app/models/payroll.rb +0 -0
  176. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/app/payments/nacha.rb +0 -0
  177. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/app/services/.codeowner +0 -0
  178. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/app/services/multi_owned.rb +0 -0
  179. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/app/unowned.rb +0 -0
  180. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/packages/payroll_flow/package.yml +0 -0
  181. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/.github/CODEOWNERS +0 -0
  182. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/.keep +0 -0
  183. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/config/code_ownership.yml +0 -0
  184. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/config/teams/design.yml +0 -0
  185. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/config/teams/frontend.yml +0 -0
  186. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/frontend/apps/public/index.tsx +0 -0
  187. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/frontend/packages/dashboard/package.json +0 -0
  188. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/frontend/packages/dashboard/src/index.tsx +0 -0
  189. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/frontend/packages/ui-kit/.codeowner +0 -0
  190. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/frontend/packages/ui-kit/src/button.tsx +0 -0
  191. /data/ext/cargo-vendor/{codeowners-0.3.0/tests/fixtures/valid_project → codeowners-0.3.3/tests/fixtures/missing_github_team}/gems/pets/dog.rb +0 -0
  192. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/.github/CODEOWNERS +0 -0
  193. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/app/consumers/.codeowner +0 -0
  194. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/app/consumers/deep/nesting/nestdir/deep_file.rb +0 -0
  195. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/app/consumers/one_owner.rb +0 -0
  196. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/app/services/.codeowner +0 -0
  197. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/app/services/exciting/.codeowner +0 -0
  198. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/app/services/exciting/some_other_file.rb +0 -0
  199. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/config/code_ownership.yml +0 -0
  200. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/config/teams/bar.yml +0 -0
  201. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/config/teams/foo.yml +0 -0
  202. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/.github/CODEOWNERS +0 -0
  203. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/.ignore +0 -0
  204. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/config/code_ownership.yml +0 -0
  205. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/config/teams/payments.yml +0 -0
  206. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/config/teams/payroll.yml +0 -0
  207. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/config/teams/ux.yml +0 -0
  208. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/gems/payroll_calculator/calculator.rb +0 -0
  209. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/javascript/packages/PayrollFlow/index.tsx +0 -0
  210. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/javascript/packages/PayrollFlow/package.json +0 -0
  211. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/javascript/packages/items/(special)/.codeowner +0 -0
  212. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/javascript/packages/items/(special)/pay.ts +0 -0
  213. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/javascript/packages/items/.codeowner +0 -0
  214. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/javascript/packages/items/item.ts +0 -0
  215. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/javascript/packages/list/page-admin.tsx +0 -0
  216. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/models/bank_account.rb +0 -0
  217. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/models/payroll.rb +0 -0
  218. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/payments/foo/.codeowner +0 -0
  219. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/payments/foo/ownedby_payroll.rb +0 -0
  220. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/payments/nacha.rb +0 -0
  221. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/payroll/.codeowner +0 -0
  222. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/payroll/payroll.rb +0 -0
  223. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/views/foos/edit.erb +0 -0
  224. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/views/foos/index.html.erb +0 -0
  225. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/views/foos/new.html.erb +0 -0
  226. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/ignored_files/git_ignored.rb +0 -0
  227. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/packages/payroll_flow/package.yml +0 -0
  228. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project/should_be_ignored/an_ignored_file.rb +0 -0
  229. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/.github/CODEOWNERS +0 -0
  230. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/config/code_ownership.yml +0 -0
  231. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/config/teams/brewers.yml +0 -0
  232. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/config/teams/cubs.yml +0 -0
  233. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/config/teams/giants.yml +0 -0
  234. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/config/teams/rockies.yml +0 -0
  235. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/datepicker/package.json +0 -0
  236. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/datepicker/src/picks/dp.tsx +0 -0
  237. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/list/package.json +0 -0
  238. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/list/src/item.tsx +0 -0
  239. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/package.json +0 -0
  240. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/src/field.tsx +0 -0
  241. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/src/fields/small.tsx +0 -0
  242. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/gems/apollo/lib/apollo.rb +0 -0
  243. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/gems/ivy/lib/ivy.rb +0 -0
  244. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/gems/lager/lib/lager.rb +0 -0
  245. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/gems/summit/lib/summit.rb +0 -0
  246. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/packs/games/app/services/stats.rb +0 -0
  247. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/packs/games/package.yml +0 -0
  248. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/packs/locations/app/services/capacity.rb +0 -0
  249. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/packs/locations/package.yml +0 -0
  250. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/packs/schedule/app/services/date.rb +0 -0
  251. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/packs/schedule/package.yml +0 -0
  252. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/brewers/lib/util.rb +0 -0
  253. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/brewers/services/play.rb +0 -0
  254. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/.codeowner +0 -0
  255. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/.codeowner +0 -0
  256. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/db/price.rb +0 -0
  257. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/entertainment.rb +0 -0
  258. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/play.rb +0 -0
  259. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/giants/services/play.rb +0 -0
  260. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/rockies/services/play.rb +0 -0
  261. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/invalid_project_structure_test.rs +0 -0
  262. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/multiple_directory_owners_test.rs +0 -0
  263. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/untracked_files_test.rs +0 -0
  264. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tests/valid_project_with_overrides_test.rs +0 -0
  265. /data/ext/cargo-vendor/{codeowners-0.3.0 → codeowners-0.3.3}/tmp/.gitkeep +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 694c5ba85aff79d932dbe3976c3fe552b0781509aa1a39c0af89e5f727cd9ce1
4
- data.tar.gz: 1c360b9fd031fefb75f77d4907300b63be02ae9316bbcc6b33eb53870602fdcb
3
+ metadata.gz: ba3096f686a127dd7c3fc0669ed1f3e763ef34fd3fa961ec78aa357a154efa4d
4
+ data.tar.gz: a04d31131291bf03006e792c6cdef4e347ba1b5ed74552f0934ab9190c9e448e
5
5
  SHA512:
6
- metadata.gz: 53c140fd95c1d935e8c1a2666ce73f05795702053e3d60a78ad5947ca867839c9a3406cd70427b33db2cfd120a1b53e676890d086948945a8626b8caee511efd
7
- data.tar.gz: db0f74d47095eac705be408d563d7cc553a6e21cc282fd4d0dd39cfe45051896539429255459a94e2584f476b1aacdc213ab92de7a97be04bc0f5ae0ef5ba445
6
+ metadata.gz: 30cbcc635fcd308c1c2cd3c8f1830debd9cb4ca85949d8c14332a781765edf42486f59160b892b2763136c6f36f20f58141c9f3a1a3e24cd86ee0e367c93f52b
7
+ data.tar.gz: 2e771a81b46f9388f95058f53a488462daf8559420783a09f1a56f354fe153471777895dbd0204a2e459dd52754ca00bcf118d47f8ebf33c98ba2c6b1a6a2561
data/.cargo/config CHANGED
@@ -1,9 +1,9 @@
1
1
  [source.crates-io]
2
2
  replace-with = "vendored-sources"
3
3
 
4
- [source."git+https://github.com/rubyatscale/codeowners-rs.git?tag=v0.3.0"]
4
+ [source."git+https://github.com/rubyatscale/codeowners-rs.git?tag=v0.3.3"]
5
5
  git = "https://github.com/rubyatscale/codeowners-rs.git"
6
- tag = "v0.3.0"
6
+ tag = "v0.3.3"
7
7
  replace-with = "vendored-sources"
8
8
 
9
9
  [source.vendored-sources]
data/Cargo.lock CHANGED
@@ -200,8 +200,8 @@ dependencies = [
200
200
 
201
201
  [[package]]
202
202
  name = "codeowners"
203
- version = "0.3.0"
204
- source = "git+https://github.com/rubyatscale/codeowners-rs.git?tag=v0.3.0#c3cace6a497f5708d3b78d1b91618fc90284ae0b"
203
+ version = "0.3.3"
204
+ source = "git+https://github.com/rubyatscale/codeowners-rs.git?tag=v0.3.3#437a527fe02b620e77723cc4e3090bdb0a42bdb3"
205
205
  dependencies = [
206
206
  "clap",
207
207
  "clap_derive",
@@ -220,6 +220,7 @@ dependencies = [
220
220
  "serde",
221
221
  "serde_json",
222
222
  "serde_yaml",
223
+ "similar",
223
224
  "tempfile",
224
225
  "tracing",
225
226
  "tracing-subscriber",
@@ -848,6 +849,12 @@ version = "1.3.0"
848
849
  source = "registry+https://github.com/rust-lang/crates.io-index"
849
850
  checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
850
851
 
852
+ [[package]]
853
+ name = "similar"
854
+ version = "2.7.0"
855
+ source = "registry+https://github.com/rust-lang/crates.io-index"
856
+ checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa"
857
+
851
858
  [[package]]
852
859
  name = "smallvec"
853
860
  version = "1.15.1"
data/README.md CHANGED
@@ -10,7 +10,7 @@ There is also a [companion VSCode Extension](https://github.com/rubyatscale/code
10
10
 
11
11
  ## Getting started
12
12
 
13
- To get started there's a few things you should do.
13
+ To get started there are a few things you should do.
14
14
 
15
15
  1. Create a `config/code_ownership.yml` file and declare where your files live. Here's a sample to start with:
16
16
 
@@ -42,7 +42,7 @@ There are five ways to declare code ownership using this gem:
42
42
 
43
43
  ### Directory-Based Ownership
44
44
 
45
- Directory based ownership allows for all files in that directory and all its sub-directories to be owned by one team. To define this, add a `.codeowner` file inside that directory with the name of the team as the contents of that file.
45
+ Directory-based ownership allows for all files in that directory and all its sub-directories to be owned by one team. To define this, add a `.codeowner` file inside that directory with the name of the team as the contents of that file.
46
46
 
47
47
  ```
48
48
  Team
@@ -58,7 +58,7 @@ File annotations are a last resort if there is no clear home for your code. File
58
58
 
59
59
  ### Package-Based Ownership
60
60
 
61
- Package based ownership integrates [`packwerk`](https://github.com/Shopify/packwerk) and has ownership defined per package. To define that all files within a package are owned by one team, configure your `package.yml` like this:
61
+ Package-based ownership integrates [`packwerk`](https://github.com/Shopify/packwerk) and has ownership defined per package. To define that all files within a package are owned by one team, configure your `package.yml` like this:
62
62
 
63
63
  ```yml
64
64
  enforce_dependency: true
@@ -92,7 +92,7 @@ unowned_globs:
92
92
 
93
93
  ### Javascript Package Ownership
94
94
 
95
- Javascript package based ownership allows you to specify an ownership key in a `package.json`. To use this, configure your `package.json` like this:
95
+ JavaScript package-based ownership allows you to specify an ownership key in a `package.json`. To use this, configure your `package.json` like this:
96
96
 
97
97
  ```json
98
98
  {
@@ -112,10 +112,10 @@ js_package_paths:
112
112
  - frontend/other_location_for_packages/*
113
113
  ```
114
114
 
115
- This defaults `**/`, which makes it look for `package.json` files across your application.
115
+ This defaults to `**/`, which makes it look for `package.json` files across your application.
116
116
 
117
117
  > [!NOTE]
118
- > Javscript package ownership does not respect `unowned_globs`. If you wish to disable usage of this feature you can set `js_package_paths` to an empty list.
118
+ > JavaScript package ownership does not respect `unowned_globs`. If you wish to disable usage of this feature you can set `js_package_paths` to an empty list.
119
119
 
120
120
  ```yml
121
121
  js_package_paths: []
@@ -184,7 +184,7 @@ If `codeowners_path` is set in `code_ownership.yml` codeowners will use that pat
184
184
  CodeOwnership comes with a validation function to ensure the following things are true:
185
185
 
186
186
  1. Only one mechanism is defining file ownership. That is -- you can't have a file annotation on a file owned via package-based or glob-based ownership. This helps make ownership behavior more clear by avoiding concerns about precedence.
187
- 2. All teams referenced as an owner for any file or package is a valid team (i.e. it's in the list of `CodeTeams.all`).
187
+ 2. All teams referenced as an owner for any file or package are valid teams (i.e. they're in the list of `CodeTeams.all`).
188
188
  3. All files have ownership. You can specify in `unowned_globs` to represent a TODO list of files to add ownership to.
189
189
  4. The `.github/CODEOWNERS` file is up to date. This is automatically corrected and staged unless specified otherwise with `bin/codeownership validate --skip-autocorrect --skip-stage`. You can turn this validation off by setting `skip_codeowners_validation: true` in `config/code_ownership.yml`.
190
190
 
@@ -223,7 +223,7 @@ codeownership validate --diff
223
223
 
224
224
  ## Development
225
225
 
226
- Please add to `CHANGELOG.md` and this `README.md` when you make make changes.
226
+ Please add to `CHANGELOG.md` and this `README.md` when you make changes.
227
227
 
228
228
  ## Running specs
229
229
 
@@ -0,0 +1 @@
1
+ {"files":{".github/CODEOWNERS":"8df3f986d37e09c1e9d8102c45e8776a506cd56b75a9fe03270626e4843c0ad0",".github/workflows/audit.yml":"bde77859031fa481da1fcaf399129b64819d78a0ffbbb2d4c4f5346f4a4dec7e",".github/workflows/ci.yml":"a4b503d5b650f4d59d7e02b3a33f623c373f1ae8c892b6ddcc47b271b7d109db",".github/workflows/dotslash-config.json":"21dbdefc13a01f3aad42923963b9025907d4049d8e75b18208e887f9e601e381",".rustfmt.toml":"394616646760b18ed094433d39e18b7d94986347c21790708bff9ab001f38e0b",".rusty-hook.toml":"9d3d8a8f4f20d80682ce71889a17eb5ba204f4636f27211fafcb6c6b5af5c2bb","AGENTS.md":"9cab0708a38900826f5b5804fc921ea3aea293f533727100bcfb5735f7835d05","CLAUDE.md":"336cc4fbf19beaada7ccf9986414fa91851a8d7a07dfb3ccbe800a69eed0ab49","Cargo.lock":"c67a0bc2198625fb8d2256ec4e57f15ee05237633b85f44a12dd67f92a590a21","Cargo.toml":"ef7fef0923fa64a6cbebc994825e47d87ccfc0176668105b1411b9f06712d93c","README.md":"11b96c2361db6e2ad82fecb354b767d55d7f77656694e10990685fe8c6c644bb","dev/run_benchmarks_for_file.sh":"f633c0fbfd1ea89b3fb21cf2721ab481670cf2de8d424bb4448a4ad5e908c38d","dev/run_benchmarks_for_gv.sh":"c3e26bed04b3f2ab5dce3372db249349990b9033fe5ed963d5b7f58a4a72ffbf","rust-toolchain.toml":"b6a9e4028a0a266a7d2055c287092b816c89336df42076dec9d9aaa4c0007c0e","src/cache/file.rs":"7ffe92cce38b2a21e8d9f7eb85b50e54a90523546a68b5441b423204b9aae940","src/cache/mod.rs":"622ad6effc3260c922fe49f3800e0d1c5b3c6a73c81d567296ea6cb550792d32","src/cache/noop.rs":"abfddf1c20cbaca5dd432952d0ff0a0a1d92eb0070866d343e368f29cdd22de9","src/cli.rs":"ddee568b1a2e3de96027e6e2caa9f0ece5f677ecc66671676100b14d3ab51353","src/common_test.rs":"9df12547039d3d99dd7dd8798a35960892f7bbcf74036adbdcf4a14b8567a743","src/config.rs":"2646a547371617acb0935941f134a131d66174ecd156792e644b7ab3d49c0b74","src/crosscheck.rs":"f5f52c735e09da7fa413c51c2f81a349f8c62782041c7649fc18909d59efcea6","src/lib.rs":"8a2946ae156e306a2245857e295886a369fa2c3ef2bace585185f64c47e293be","src/main.rs":"51f0621733107ff3505cfffdf84b557e7fdbc79189f55561d8fb9ad550d6fb78","src/ownership.rs":"29287dd073294afd2826b6754175d09ca87773191af2218487ff9e703ccd2035","src/ownership/codeowners_file_parser.rs":"0f798722af3a0adb0b8b790e871e56257d9f265ed2d8542f0d202eca5afca2f4","src/ownership/codeowners_query.rs":"30556b0ee2c38c1ca9283763df1ad7ddd7f964bc8d449c0bf2f935c387fe1673","src/ownership/file_generator.rs":"ec584457925414c1c06a7ca66f0f78d17c50243fbbcd0acedd3ab981eb93bb88","src/ownership/file_owner_finder.rs":"104626da603ddcaccb217387f13141c81fb768b41cf8b7fbc5f65809f487231b","src/ownership/file_owner_resolver.rs":"02d72fd4edeaad36b3454fe1c1e638665d208a14c09a8dd26465fad4a5bd90e2","src/ownership/mapper.rs":"a3bd5bc0bf7423fd061a044bd9fcc1d1b6bccd24e914b1f90a10a6fac56cc2f9","src/ownership/mapper/annotated_file_mapper.rs":"f34f845ddb45545f02f8ae2ab83c3934bc38dd95f9ba9d4142e12f61dfac271a","src/ownership/mapper/directory_mapper.rs":"a86866b518efbfdbb056a2d472c981eec875f2ddca5899f029405b76e875b018","src/ownership/mapper/escaper.rs":"2faa41beefedca26d493e8d8f68882384ddbb2c4b108953f30b960847a3f841c","src/ownership/mapper/package_mapper.rs":"394297b4c5890fb3a6b0289b78cec63fbb2e15fb4dc043e9d3ba0cb00769b7f6","src/ownership/mapper/team_gem_mapper.rs":"50b6ad9e60c03e055662724296576b4586167b0d7d6c03819f98b30c0f37342f","src/ownership/mapper/team_glob_mapper.rs":"ce0638118ec9c610210880534a62740f9bd4d15494b0b9516bcc11fa2bbfb508","src/ownership/mapper/team_yml_mapper.rs":"3c759139fc9ff362b82102aeaec958aec7ec9df86df87482a3362ab8ea54404f","src/ownership/validator.rs":"cc07397eb01b8e09067583535d68736708279dfd1cfbafb32a872ba850e00c19","src/path_utils.rs":"de5f7fc080f372ca025f777a5018319236f5b83c2c1ac77f9a387e62ce683ab4","src/project.rs":"26fac1893915f978f32eb80c5a8cf39ff37dc05f77e445e7e4fea8aba36a8f7c","src/project_builder.rs":"725a19d4e68cac2d7348bcfbc2b9c8b35f1d789247a3746e3adb70277485d1ac","src/project_file_builder.rs":"d0be8786d8160ad40d2286c9e43e11df1d38dbb7f7c84f5029d4656b19d75cbf","src/runner.rs":"7ab4f07660e249f5301e8944ab82e24df48012f6fa7a70ea81b8ef912cce8f8d","src/runner/api.rs":"c7e9815fbf654665da9d11d6b2405f623ed2fc36b93c37db212421351e9a779b","src/runner/types.rs":"30be32563f7fee61ca991618874dda497ccbe1d7c3fde4c023fd9eaa90ce7853","src/tracked_files.rs":"85ab07d649a5a9d90181489f8ebb7c173af4547ca267bc277b5bcf7534715823","tests/cache_test.rs":"80b900f38e177eb8c9e162b9373cd1d7c3a551baade716a1b07554a021bfef05","tests/codeowners_path_test.rs":"6e10631bcd93bbb850eed2818de057f0621c714137a11676f0a689f775699f52","tests/common/mod.rs":"ea2b9de36002a946c3ab6ed4101ff7c395c7a0f9ac143c12618a3d27fc8e15e4","tests/crosscheck_owners_test.rs":"8f83ec2feb7bef1cf34fec445096a342900359e5efed3b0b9485d48dad6e704d","tests/executable_name_config_test.rs":"5b3f35a89e5db9974faa754e6c82a2f81b1b2ee13c405f527e825e4fcef64642","tests/fixtures/custom_codeowners_path/config/code_ownership.yml":"3c9a4b046bab1f4d842e728dc9dea32ec09e7d01b6db5d1726e71ab330773b0e","tests/fixtures/custom_codeowners_path/config/teams/test_team.yml":"93ecfdd871a5e12e11293fd920988f82a67cb1a6fe39740a988a3e3fd0fda68f","tests/fixtures/custom_codeowners_path/docs/CODEOWNERS":"53db3b0313340fc5ce3a4c8050d1d8e7c1fb4fae1050e5bb047d3b211afed272","tests/fixtures/custom_codeowners_path/expected/CODEOWNERS":"53db3b0313340fc5ce3a4c8050d1d8e7c1fb4fae1050e5bb047d3b211afed272","tests/fixtures/custom_codeowners_path/ruby/app/models/test.rb":"d4218b8bc15617dd06a04632896ff45547545d2b1a0847adf5db860ac7ca060f","tests/fixtures/custom_executable_name/.github/CODEOWNERS":"29266b6d7a53c17068f5bf7636fa5ec6b7e1831d11bb8facf6efac22200cabbc","tests/fixtures/custom_executable_name/app/foo.rb":"083a6a7028749e3ef5397011b695037d958d5535cc332f666a853f06649cc0e4","tests/fixtures/custom_executable_name/config/code_ownership.yml":"107fab4d8816bcf1d0f70663450db390b713bdaa45a16ffbc7095663d44b5ca1","tests/fixtures/custom_executable_name/config/teams/foo.yml":"e2ebda8a83ab460456238351c112fa34fd056603ab556ef86afb10565aaa4398","tests/fixtures/custom_executable_name/config/teams/payments.yml":"9a333c4b5ad8abb3cc0610fa5562e499dc5665bbdd25755ba39b13ebea08940b","tests/fixtures/custom_executable_name/ruby/app/payments/foo.rb":"e4e0884c8dbbb76a53fa1a1877925cef81724fc8618d73056857209820acd42f","tests/fixtures/default_executable_name/.github/CODEOWNERS":"7f61abd3158f4075ffd774c04d7c709f202eada439a15727484df40bce692186","tests/fixtures/default_executable_name/app/bar.rb":"522851f30712c0df9f444af429a0e2bbfb9d095c0af3b4bdb925eb80d088680e","tests/fixtures/default_executable_name/config/code_ownership.yml":"85c44e76a650b80a46eadc44bc4e6f184a8d405b63b2bf186726b2974e083a2f","tests/fixtures/default_executable_name/config/teams/bar.yml":"8a4369cf629089eec906495d05f3ef58ece3e17dd860e452cceec18bad1dfcef","tests/fixtures/invalid_project/.github/CODEOWNERS":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b","tests/fixtures/invalid_project/config/code_ownership.yml":"395b9023f51a29b8326a230c82543d8e8e7656376b4d82b1e77c7c5879620a30","tests/fixtures/invalid_project/config/teams/payments.yml":"205b0d200a5b686ad91c4080eadeefef200cc4974939b5ef02c15ef2edf775a1","tests/fixtures/invalid_project/config/teams/payroll.yml":"f3a85ce896837c2a9d38c2d23a600b1fd72f3bf8c4c65c12719ce942b3b17375","tests/fixtures/invalid_project/gems/payroll_calculator/calculator.rb":"350c85edfe24cd54b2479eda5266aae894b4c5eb6e9a3c0a0a1fb30e8c4d1d0f","tests/fixtures/invalid_project/ruby/app/models/bank_account.rb":"0832b2e95f90fa7ebd8dcbfd53c05618f091d38abf5dd238bd4d41645746160d","tests/fixtures/invalid_project/ruby/app/models/blockchain.rb":"9ffaa2304d02b8d40050017b62edbaf61b8600dc0b1a2c5b7f069b7c55c30616","tests/fixtures/invalid_project/ruby/app/models/payroll.rb":"7f48f8730fd738a2760ee81be8a6028cccb3c6c38be0433c7fd81a4bdd631b60","tests/fixtures/invalid_project/ruby/app/payments/nacha.rb":"c5ced2841986f3d48be0a132185a39dbc327715064574887303a25cf02aaad4d","tests/fixtures/invalid_project/ruby/app/services/.codeowner":"53fe8dfb6d9e1b03219adddcc3ffb741557dd579dc653d026097c463def4a8fe","tests/fixtures/invalid_project/ruby/app/services/multi_owned.rb":"42b340c67ad95016eb7e852abe37b39f7a0b5be41f897f972e05d2e581d6c30f","tests/fixtures/invalid_project/ruby/app/unowned.rb":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","tests/fixtures/invalid_project/ruby/packages/payroll_flow/package.yml":"c1a08643821d02a57131870e8b6325f864db0687c5583f3d0872ada9d004072a","tests/fixtures/javascript_only_project/.github/CODEOWNERS":"fbd7770603296872c5993d1325a2d00a8d1704ad99002db9ab0dccc7182e3b37","tests/fixtures/javascript_only_project/.keep":"ff2dc9018b2c43a9793444552abcf83560daf5f7b1733bf7dbcaed4ee97db60e","tests/fixtures/javascript_only_project/config/code_ownership.yml":"b9cdde18cb0f0e8c025342c8d633197c401083f475ef34d7f9228ef343a0ba21","tests/fixtures/javascript_only_project/config/teams/design.yml":"6db44f08e2b0fb9e5bd91a83ba122025cf7e7a008703c39df9d0b10306a6e752","tests/fixtures/javascript_only_project/config/teams/frontend.yml":"f9fa6eee0ed9fc5a0b44485c306bb11785f9120a871c5e0bc074a5eacb808686","tests/fixtures/javascript_only_project/frontend/apps/public/index.tsx":"b3c88c0731b4b739d120f161266a501743a58577db571702dc6f3f0fd1483b4d","tests/fixtures/javascript_only_project/frontend/packages/dashboard/package.json":"3dd571d4d569608311ddab4a99cfe5596ab4c29fd0bade76ee9756cf28b0ac48","tests/fixtures/javascript_only_project/frontend/packages/dashboard/src/index.tsx":"5ef179897d55e9e8c6b70e5ad82803b11f0fcd5cfb3c7313e87b839798608e15","tests/fixtures/javascript_only_project/frontend/packages/ui-kit/.codeowner":"b5f4517c94406cb8d45702193f8282b62af30971d068e79d7bc2fd930cb0bb4c","tests/fixtures/javascript_only_project/frontend/packages/ui-kit/src/button.tsx":"7c18c050058f884a7f096b9fd4b1ccf853bc4e84dd786b5a92c5f0479b32f128","tests/fixtures/missing_github_team/.github/CODEOWNERS":"2a2f3c33c892b3ca170925e6f428d6bd506008f8343c67f640f55741ff22d611","tests/fixtures/missing_github_team/config/code_ownership.yml":"eb683ba7b42f810b457e1181626c6eb3b44bd5c80ba396bc0e8d29334a8187bf","tests/fixtures/missing_github_team/config/teams/bad_team.yml":"93cc7413631ce8fd5f95d083c9061f923de32e7c756bc6f0c9b17d593e4c4c12","tests/fixtures/missing_github_team/config/teams/good.yml":"bb8d9ea5106b9b87d17b3e72de7802f39f1879764fd99b13738cfdb43d503973","tests/fixtures/missing_github_team/gems/pets/dog.rb":"ed2553442d1646af1c421a7a04b92269612efbc5ec0ccb32930e27ceac65b2ea","tests/fixtures/multiple-directory-owners/.github/CODEOWNERS":"957d160c3d00eb530f7ebb34cc9b7c61934d108eb52ce3cb03b6d9978fad86df","tests/fixtures/multiple-directory-owners/app/consumers/.codeowner":"842c88863910f6eab22edcbdbe9f0f4dd96c6b46c711bd40277b36b8178943c4","tests/fixtures/multiple-directory-owners/app/consumers/deep/nesting/nestdir/deep_file.rb":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","tests/fixtures/multiple-directory-owners/app/consumers/one_owner.rb":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","tests/fixtures/multiple-directory-owners/app/services/.codeowner":"3eae1599bb7f187b86d6427942d172ba8dd7ee5962aab03e0839ad9d59c37eb0","tests/fixtures/multiple-directory-owners/app/services/exciting/.codeowner":"842c88863910f6eab22edcbdbe9f0f4dd96c6b46c711bd40277b36b8178943c4","tests/fixtures/multiple-directory-owners/app/services/exciting/some_other_file.rb":"c0cf1112663d326ba9b47fbcf961e98170c32e9287d5af574c35b3350fb3c59a","tests/fixtures/multiple-directory-owners/config/code_ownership.yml":"fcff2625d3a836924e75afd4a326c8f425a9ac4b4c5ffe276b8a14a083cc005a","tests/fixtures/multiple-directory-owners/config/teams/bar.yml":"253d9d9cb7f5b5cb81af19d8af7631b510d0f4ad59b32465c5e26bd78886f9c6","tests/fixtures/multiple-directory-owners/config/teams/foo.yml":"d4ba6d61c16e4227681f13013775e3d117e0cee4631714849405c47ff36ecbfc","tests/fixtures/valid_project/.github/CODEOWNERS":"ca6a9b2a225685b478fb7b542dd63ab945cd51ccd82b4d86495b3a3d7c020b6c","tests/fixtures/valid_project/.ignore":"68f30767f9c87c700952d52d9d39693e1a98efb6c07a0b9216fbc87d173ebb5e","tests/fixtures/valid_project/config/code_ownership.yml":"1443a689ff1b64d23cf6590b5d559ef386b549815f51bfe8a27ecd5f3111a5b8","tests/fixtures/valid_project/config/teams/payments.yml":"7c4edf4ab7db59c1ef13ef4e7aa498c8e8c23c19427ebebe4f43bca003619f2a","tests/fixtures/valid_project/config/teams/payroll.yml":"f3a85ce896837c2a9d38c2d23a600b1fd72f3bf8c4c65c12719ce942b3b17375","tests/fixtures/valid_project/config/teams/ux.yml":"918e96ab1b5c67c99b30b8e984c2cef8fa956b1c83802a76923b3f448bcdec62","tests/fixtures/valid_project/gems/payroll_calculator/calculator.rb":"991056cdd4824eea15055f9c055c22fb3281cc21cffbca94724b330b8a450e59","tests/fixtures/valid_project/gems/pets/dog.rb":"ed2553442d1646af1c421a7a04b92269612efbc5ec0ccb32930e27ceac65b2ea","tests/fixtures/valid_project/javascript/packages/PayrollFlow/index.tsx":"b78b223d3bdb83af6ef7f78bd305f6e18f11abf961ded3266f7bebdb9eb00686","tests/fixtures/valid_project/javascript/packages/PayrollFlow/package.json":"271a0bb50784a65df66fd5db7167d1dd67430c774c207eda58a96974dbafc408","tests/fixtures/valid_project/javascript/packages/items/(special)/.codeowner":"632e1c5839411a1009ef268e992c4b183cb1d5381b198eac0f8323213a61ed82","tests/fixtures/valid_project/javascript/packages/items/(special)/pay.ts":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","tests/fixtures/valid_project/javascript/packages/items/.codeowner":"53fe8dfb6d9e1b03219adddcc3ffb741557dd579dc653d026097c463def4a8fe","tests/fixtures/valid_project/javascript/packages/items/item.ts":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","tests/fixtures/valid_project/javascript/packages/list/page-admin.tsx":"4785eb6da46cfac5a74130f51a032d565824a0cfdde8f853530bd1e16baa8a95","tests/fixtures/valid_project/ruby/app/models/bank_account.rb":"0832b2e95f90fa7ebd8dcbfd53c05618f091d38abf5dd238bd4d41645746160d","tests/fixtures/valid_project/ruby/app/models/payroll.rb":"00214579a6b59629d74eb60e315b9e1cd77889ba54d46f0fa8e2936e7fbc4c53","tests/fixtures/valid_project/ruby/app/payments/foo/.codeowner":"53fe8dfb6d9e1b03219adddcc3ffb741557dd579dc653d026097c463def4a8fe","tests/fixtures/valid_project/ruby/app/payments/foo/ownedby_payroll.rb":"705296c5ae6b3c1efdb410c952095b6efba3f9edd0af1b42d20e6ba217b1744d","tests/fixtures/valid_project/ruby/app/payments/nacha.rb":"c5ced2841986f3d48be0a132185a39dbc327715064574887303a25cf02aaad4d","tests/fixtures/valid_project/ruby/app/payroll/.codeowner":"b58412ec67186588652c88a6c71fd7499e27984e1e587e137426bed8ddd53173","tests/fixtures/valid_project/ruby/app/payroll/payroll.rb":"ff6cb08457469043bd93b4fdbcecc37a29a506641ab486f9cafd319125ff00ca","tests/fixtures/valid_project/ruby/app/views/foos/edit.erb":"47a411fb8b793bf622fdb956f89a3b20835cd92201b61141f09748f8ff55ee21","tests/fixtures/valid_project/ruby/app/views/foos/index.html.erb":"4b7fd88053dfa83a4131200ed3196b41938e4a68119570e4aa1652ecdd7c6bfe","tests/fixtures/valid_project/ruby/app/views/foos/new.html.erb":"47a411fb8b793bf622fdb956f89a3b20835cd92201b61141f09748f8ff55ee21","tests/fixtures/valid_project/ruby/ignored_files/git_ignored.rb":"fb333306f05e93ff821123b1c09d264c5f37f1bd739156d91167789795704671","tests/fixtures/valid_project/ruby/packages/payroll_flow/package.yml":"c1a08643821d02a57131870e8b6325f864db0687c5583f3d0872ada9d004072a","tests/fixtures/valid_project/should_be_ignored/an_ignored_file.rb":"bd5ce0746f05ded73148e184b36741f3846e0af7409b42c16abae54a9220113a","tests/fixtures/valid_project_with_overrides/.github/CODEOWNERS":"99438c376b9ef057e5182f0197b42f7bb644773d181f1f94f3a7b2028052af34","tests/fixtures/valid_project_with_overrides/config/code_ownership.yml":"d4349ca21efdfd2a8247907db492e85aecea013f3977fabc5cc1a8a6411f7c3d","tests/fixtures/valid_project_with_overrides/config/teams/brewers.yml":"c45a00561fdaa703ed3a044a5c0271bd9d3e9fad64c3df58e17b07c38d151907","tests/fixtures/valid_project_with_overrides/config/teams/cubs.yml":"1bb8b70d29e97b2c78f35f84be18cafe2f3334bd81c45601217b1abdfcbdb088","tests/fixtures/valid_project_with_overrides/config/teams/giants.yml":"fdaead5b59332f408abc7e6a099f4773be232942532ae501aadc6d7f0110e302","tests/fixtures/valid_project_with_overrides/config/teams/rockies.yml":"0334aa2d3ba78261fb776f565ef38f1e19638e0fa5e05cae5785cec036ca7138","tests/fixtures/valid_project_with_overrides/frontend/packages/components/datepicker/package.json":"02e3dd340b4c1ab53bc2925164666b7c8c92cfb5afff7cdffcbb0760c0f23b56","tests/fixtures/valid_project_with_overrides/frontend/packages/components/datepicker/src/picks/dp.tsx":"7709ee4137249bf9d5c38687533304e7e04a174d233bc6f6e8a1f0de54689907","tests/fixtures/valid_project_with_overrides/frontend/packages/components/list/package.json":"9b95dfa430e9167629e1d908ccbef8ed17e3818fcc04c10cd11aee1ba806f8d9","tests/fixtures/valid_project_with_overrides/frontend/packages/components/list/src/item.tsx":"8360b4a2d4b8705c5d070b0834e7f4d1e8fc3fdac4221dd5a1ac33a2b256d1bb","tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/package.json":"5676381fcd3acf9d7daa0f28eaf47b7fc481b7b826469655675ddd0bd4548429","tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/src/field.tsx":"6821d8fe047c903a1b4a897ed1bed9638e556098db653518c3700507236a9cdc","tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/src/fields/small.tsx":"18d9323ac98ac4bd4a685193763e1f29426be5ac8c4d7e7975945d79644226fd","tests/fixtures/valid_project_with_overrides/gems/apollo/lib/apollo.rb":"0470c442f361f8df49268fc1ea6d84f9512598d43595d54d6bda896a13e144f5","tests/fixtures/valid_project_with_overrides/gems/ivy/lib/ivy.rb":"54f5443bef6aebcb63ab0501f418c8b03928514a8a7ac9ed41d35dfb619a24b1","tests/fixtures/valid_project_with_overrides/gems/lager/lib/lager.rb":"d90ceebb7bc6156b2e3b3a88274f6a330f6b33f1b7404a3d1561618d9ae261f3","tests/fixtures/valid_project_with_overrides/gems/summit/lib/summit.rb":"ef61bf61c1d574c562d8d2d7e6692e0bb0cdb3e02b49691d3558cb205a6b3d27","tests/fixtures/valid_project_with_overrides/packs/games/app/services/stats.rb":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","tests/fixtures/valid_project_with_overrides/packs/games/package.yml":"d44cb7e67286294b43fc51e7eefd36fecb488bd7e3aa1c15ba5e2f0fd1364806","tests/fixtures/valid_project_with_overrides/packs/locations/app/services/capacity.rb":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","tests/fixtures/valid_project_with_overrides/packs/locations/package.yml":"ae1e90f7aadaa78fed7c97083dd0f46b394e53b848c08cf370b59c0f8de25e1c","tests/fixtures/valid_project_with_overrides/packs/schedule/app/services/date.rb":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","tests/fixtures/valid_project_with_overrides/packs/schedule/package.yml":"e97c4d452c4656b9e7b3c22093d5969c4a59a8c019a4fc7ef513c5748f6a9ede","tests/fixtures/valid_project_with_overrides/ruby/app/brewers/lib/util.rb":"92be44095fe84e95ea5ce3f5b42cc9681063646135c8163017a56d407a367005","tests/fixtures/valid_project_with_overrides/ruby/app/brewers/services/play.rb":"1c4d38afc6eed1eac4681fa774dfc1fbcad894b245616c88efcf7afff21e7762","tests/fixtures/valid_project_with_overrides/ruby/app/cubs/.codeowner":"870f5b1fed86d50ea4a808b13b307f172b5e39b9be296cff27ad9babbcd384e9","tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/.codeowner":"d706f1c0496146d6009e700d1e78c4f0f0927edf73c656ec59fccf40a72d4291","tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/db/price.rb":"b571b23154f35a482975537bb752975c7957d78b02163842e9afb52513e3b8ce","tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/entertainment.rb":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/play.rb":"e4b77f45119ecc9cead0a189f90295ff16e15a35c38763bd0942b5aa6aad83b2","tests/fixtures/valid_project_with_overrides/ruby/app/giants/services/play.rb":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","tests/fixtures/valid_project_with_overrides/ruby/app/rockies/services/play.rb":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","tests/git_stage_test.rs":"145b13404ccec67a420fbc59e8b137cd394e612b2bab1f76d7e175c29ef7d4ab","tests/invalid_project_structure_test.rs":"af048ddfa756bc2e187ea885ea533a4b67907c5bcc531a082ffceca0728649b4","tests/invalid_project_test.rs":"8aa4baa811605b58ca3ce0bcebd245c2c863dd27888be0713a61a011ed2fe0de","tests/missing_github_team_test.rs":"e279592be3a68bb348066f90543f9ec8e702d2876cd524a55acaaf86a579fea7","tests/multiple_directory_owners_test.rs":"8fec90a2c1bcdd8886987a33d9c4afcd0094ce102cfa3d0415bcc2b5354eae80","tests/run_config_executable_override_test.rs":"1ffac121827dc2065460ff0ae4243704084441bc6d642396bc5e9a1d01c5b401","tests/runner_api.rs":"aa8d909b760e43f30c7b3b9dff761c6dd917ea51feb5baeb33ed191475a0fc3f","tests/untracked_files_test.rs":"f4c1906b6591ae7f206f3ac0838c99a35c5fb81f650928ed929e6246549d9874","tests/valid_project_test.rs":"4c76f2770f80c6a6d720a2ee970c176f7a813a5f3af6d0086f866478248c9e11","tests/valid_project_with_overrides_test.rs":"77150218cc4e6d7527d910d89cc3303f8d02671e6686069a41e2484b4fa31f59","tests/validate_files_test.rs":"517eb0f41405f2b1b3a69487c2a4fe526736bbadacce57e0fa0b57e5fba381df","tmp/.gitkeep":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"package":null}
@@ -0,0 +1 @@
1
+ * @rubyatscale/ruby-at-scale
@@ -0,0 +1,38 @@
1
+ This file provides guidance to AI coding agents when working with code in this repository.
2
+
3
+ ## What this project is
4
+
5
+ `codeowners-rs` is a Rust implementation of a CODEOWNERS resolver. It parses CODEOWNERS files and determines ownership of files in a repository, used as both a library and CLI tool.
6
+
7
+ ## Commands
8
+
9
+ ```bash
10
+ # Build
11
+ cargo build
12
+ cargo build --release
13
+
14
+ # Run all tests
15
+ cargo test
16
+
17
+ # Run a single test by name
18
+ cargo test test_name
19
+
20
+ # Lint
21
+ cargo clippy --all-targets --all-features
22
+ cargo fmt --all -- --check # check only
23
+ cargo fmt --all # apply formatting
24
+
25
+ # Check compilation without building
26
+ cargo check
27
+ ```
28
+
29
+ ## Architecture
30
+
31
+ - `src/main.rs` — CLI entry point using `clap`
32
+ - `src/lib.rs` — library root; exposes the public API
33
+ - `src/ownership.rs` / `src/ownership/` — core ownership resolution logic: parses CODEOWNERS patterns and matches them against file paths
34
+ - `src/config.rs` — configuration loading
35
+ - `src/runner/` — orchestrates file walking and ownership resolution
36
+ - `src/cache/` — caching layer for resolved ownership results
37
+ - `src/cli.rs` — CLI command definitions
38
+ - Integration tests in `src/common_test.rs`; fixture data used in tests lives alongside test files
@@ -0,0 +1 @@
1
+ @AGENTS.md
@@ -179,7 +179,7 @@ checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675"
179
179
 
180
180
  [[package]]
181
181
  name = "codeowners"
182
- version = "0.3.0"
182
+ version = "0.3.3"
183
183
  dependencies = [
184
184
  "assert_cmd",
185
185
  "clap",
@@ -203,6 +203,7 @@ dependencies = [
203
203
  "serde",
204
204
  "serde_json",
205
205
  "serde_yaml",
206
+ "similar",
206
207
  "tempfile",
207
208
  "tracing",
208
209
  "tracing-subscriber",
@@ -868,6 +869,12 @@ dependencies = [
868
869
  "lazy_static",
869
870
  ]
870
871
 
872
+ [[package]]
873
+ name = "similar"
874
+ version = "2.7.0"
875
+ source = "registry+https://github.com/rust-lang/crates.io-index"
876
+ checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa"
877
+
871
878
  [[package]]
872
879
  name = "smallvec"
873
880
  version = "1.10.0"
@@ -12,7 +12,7 @@
12
12
  [package]
13
13
  edition = "2024"
14
14
  name = "codeowners"
15
- version = "0.3.0"
15
+ version = "0.3.3"
16
16
  build = false
17
17
  autolib = false
18
18
  autobins = false
@@ -33,10 +33,18 @@ path = "src/main.rs"
33
33
  name = "cache_test"
34
34
  path = "tests/cache_test.rs"
35
35
 
36
+ [[test]]
37
+ name = "codeowners_path_test"
38
+ path = "tests/codeowners_path_test.rs"
39
+
36
40
  [[test]]
37
41
  name = "crosscheck_owners_test"
38
42
  path = "tests/crosscheck_owners_test.rs"
39
43
 
44
+ [[test]]
45
+ name = "executable_name_config_test"
46
+ path = "tests/executable_name_config_test.rs"
47
+
40
48
  [[test]]
41
49
  name = "git_stage_test"
42
50
  path = "tests/git_stage_test.rs"
@@ -49,10 +57,18 @@ path = "tests/invalid_project_structure_test.rs"
49
57
  name = "invalid_project_test"
50
58
  path = "tests/invalid_project_test.rs"
51
59
 
60
+ [[test]]
61
+ name = "missing_github_team_test"
62
+ path = "tests/missing_github_team_test.rs"
63
+
52
64
  [[test]]
53
65
  name = "multiple_directory_owners_test"
54
66
  path = "tests/multiple_directory_owners_test.rs"
55
67
 
68
+ [[test]]
69
+ name = "run_config_executable_override_test"
70
+ path = "tests/run_config_executable_override_test.rs"
71
+
56
72
  [[test]]
57
73
  name = "runner_api"
58
74
  path = "tests/runner_api.rs"
@@ -89,6 +105,7 @@ rayon = "1.10.0"
89
105
  regex = "1.11.1"
90
106
  serde_json = "1.0.143"
91
107
  serde_yaml = "0.9.34"
108
+ similar = "2.6.0"
92
109
  tempfile = "3.21.0"
93
110
  tracing = "0.1.41"
94
111
 
@@ -213,6 +213,15 @@ codeowners gv --no-cache
213
213
  - `vendored_gems_path` (default: `'vendored/'`)
214
214
  - `cache_directory` (default: `'tmp/cache/codeowners'`)
215
215
  - `ignore_dirs` (default includes: `.git`, `node_modules`, `tmp`, etc.)
216
+ - `executable_name` (default: `'codeowners'`): Customize the command name shown in validation error messages. Useful when using `codeowners-rs` via wrappers like the [code_ownership](https://github.com/rubyatscale/code_ownership) Ruby gem.
217
+
218
+ Example configuration with custom executable name:
219
+
220
+ ```yaml
221
+ owned_globs:
222
+ - '{app,components,config,frontend,lib,packs,spec}/**/*.{rb,rake,js,jsx,ts,tsx}'
223
+ executable_name: 'bin/codeownership' # For Ruby gem wrapper
224
+ ```
216
225
 
217
226
  See examples in `tests/fixtures/**/config/` for reference setups.
218
227
 
@@ -244,9 +253,10 @@ use codeowners::runner::{RunConfig, for_file, teams_for_files_from_codeowners};
244
253
  fn main() {
245
254
  let run_config = RunConfig {
246
255
  project_root: std::path::PathBuf::from("."),
247
- codeowners_file_path: std::path::PathBuf::from(".github/CODEOWNERS"),
256
+ codeowners_file_path: Some(std::path::PathBuf::from(".github/CODEOWNERS")), // optional, if None provided, will be resolved from config/env
248
257
  config_path: std::path::PathBuf::from("config/code_ownership.yml"),
249
258
  no_cache: true, // set false to enable on-disk caching
259
+ executable_name: None,
250
260
  };
251
261
 
252
262
  // Find owner for a single file using the optimized path (not just CODEOWNERS)
@@ -65,9 +65,9 @@ struct Args {
65
65
  #[command(subcommand)]
66
66
  command: Command,
67
67
 
68
- /// Path for the CODEOWNERS file.
69
- #[arg(long, default_value = "./.github/CODEOWNERS")]
70
- codeowners_file_path: PathBuf,
68
+ /// Path for the CODEOWNERS file (overrides codeowners_path from the config) [default: .github/CODEOWNERS]
69
+ #[arg(long)]
70
+ codeowners_file_path: Option<PathBuf>,
71
71
  /// Path for the configuration file
72
72
  #[arg(long, default_value = "./config/code_ownership.yml")]
73
73
  config_path: PathBuf,
@@ -93,8 +93,11 @@ impl Args {
93
93
  Ok(self.absolute_path(&self.config_path)?.clean())
94
94
  }
95
95
 
96
- fn absolute_codeowners_path(&self) -> Result<PathBuf, RunnerError> {
97
- Ok(self.absolute_path(&self.codeowners_file_path)?.clean())
96
+ fn absolute_codeowners_path(&self) -> Result<Option<PathBuf>, RunnerError> {
97
+ match &self.codeowners_file_path {
98
+ Some(path) => Ok(Some(self.absolute_path(path)?.clean())),
99
+ None => Ok(None),
100
+ }
98
101
  }
99
102
 
100
103
  fn absolute_path(&self, path: &Path) -> Result<PathBuf, RunnerError> {
@@ -114,6 +117,7 @@ pub fn cli() -> Result<RunResult, RunnerError> {
114
117
  codeowners_file_path,
115
118
  project_root,
116
119
  no_cache: args.no_cache,
120
+ executable_name: None,
117
121
  };
118
122
 
119
123
  let runner_result = match args.command {
@@ -25,6 +25,12 @@ pub struct Config {
25
25
 
26
26
  #[serde(default = "default_ignore_dirs")]
27
27
  pub ignore_dirs: Vec<String>,
28
+
29
+ #[serde(default = "default_executable_name")]
30
+ pub executable_name: String,
31
+
32
+ #[serde(default = "default_codeowners_path")]
33
+ pub codeowners_path: String,
28
34
  }
29
35
 
30
36
  #[allow(dead_code)]
@@ -61,9 +67,12 @@ fn vendored_gems_path() -> String {
61
67
  "vendored/".to_string()
62
68
  }
63
69
 
70
+ fn default_executable_name() -> String {
71
+ "codeowners generate".to_string()
72
+ }
73
+
64
74
  fn default_ignore_dirs() -> Vec<String> {
65
75
  vec![
66
- ".cursor".to_owned(),
67
76
  ".git".to_owned(),
68
77
  ".idea".to_owned(),
69
78
  ".vscode".to_owned(),
@@ -78,6 +87,10 @@ fn default_ignore_dirs() -> Vec<String> {
78
87
  ]
79
88
  }
80
89
 
90
+ fn default_codeowners_path() -> String {
91
+ ".github".to_string()
92
+ }
93
+
81
94
  impl Config {
82
95
  pub fn load_from_path(path: &Path) -> std::result::Result<Self, String> {
83
96
  let file = File::open(path).map_err(|e| format!("Can't open config file: {} ({})", path.to_string_lossy(), e))?;
@@ -121,6 +134,73 @@ mod tests {
121
134
  vec!["frontend/**/node_modules/**/*", "frontend/**/__generated__/**/*"]
122
135
  );
123
136
  assert_eq!(config.vendored_gems_path, "vendored/");
137
+ assert_eq!(config.executable_name, "codeowners generate");
138
+ Ok(())
139
+ }
140
+
141
+ #[test]
142
+ fn test_parse_config_with_custom_executable_name() -> Result<(), Box<dyn Error>> {
143
+ let temp_dir = tempdir()?;
144
+ let config_path = temp_dir.path().join("config.yml");
145
+ let config_str = indoc! {"
146
+ ---
147
+ owned_globs:
148
+ - \"**/*.rb\"
149
+ executable_name: my-custom-codeowners
150
+ "};
151
+ fs::write(&config_path, config_str)?;
152
+ let config_file = File::open(&config_path)?;
153
+ let config: Config = serde_yaml::from_reader(config_file)?;
154
+ assert_eq!(config.executable_name, "my-custom-codeowners");
155
+ Ok(())
156
+ }
157
+
158
+ #[test]
159
+ fn test_executable_name_defaults_when_not_specified() -> Result<(), Box<dyn Error>> {
160
+ let temp_dir = tempdir()?;
161
+ let config_path = temp_dir.path().join("config.yml");
162
+ let config_str = indoc! {"
163
+ ---
164
+ owned_globs:
165
+ - \"**/*.rb\"
166
+ "};
167
+ fs::write(&config_path, config_str)?;
168
+ let config_file = File::open(&config_path)?;
169
+ let config: Config = serde_yaml::from_reader(config_file)?;
170
+ assert_eq!(config.executable_name, "codeowners generate");
171
+ Ok(())
172
+ }
173
+
174
+ #[test]
175
+ fn test_codeowners_path_defaults_when_not_specified() -> Result<(), Box<dyn Error>> {
176
+ let temp_dir = tempdir()?;
177
+ let config_path = temp_dir.path().join("config.yml");
178
+ let config_str = indoc! {"
179
+ ---
180
+ owned_globs:
181
+ - \"**/*.rb\"
182
+ "};
183
+ fs::write(&config_path, config_str)?;
184
+ let config_file = File::open(&config_path)?;
185
+ let config: Config = serde_yaml::from_reader(config_file)?;
186
+ assert_eq!(config.codeowners_path, ".github");
187
+ Ok(())
188
+ }
189
+
190
+ #[test]
191
+ fn test_codeowners_path_can_be_customized() -> Result<(), Box<dyn Error>> {
192
+ let temp_dir = tempdir()?;
193
+ let config_path = temp_dir.path().join("config.yml");
194
+ let config_str = indoc! {"
195
+ ---
196
+ owned_globs:
197
+ - \"**/*.rb\"
198
+ codeowners_path: docs
199
+ "};
200
+ fs::write(&config_path, config_str)?;
201
+ let config_file = File::open(&config_path)?;
202
+ let config: Config = serde_yaml::from_reader(config_file)?;
203
+ assert_eq!(config.codeowners_path, "docs");
124
204
  Ok(())
125
205
  }
126
206
  }
@@ -6,7 +6,7 @@ use crate::{
6
6
  ownership::file_owner_resolver::find_file_owners,
7
7
  project::Project,
8
8
  project_builder::ProjectBuilder,
9
- runner::{RunConfig, RunResult, config_from_path, team_for_file_from_codeowners},
9
+ runner::{RunConfig, RunResult, config_from_run_config, team_for_file_from_codeowners},
10
10
  };
11
11
 
12
12
  pub fn crosscheck_owners(run_config: &RunConfig, cache: &Cache) -> RunResult {
@@ -43,16 +43,13 @@ fn do_crosscheck_owners(run_config: &RunConfig, cache: &Cache) -> Result<Vec<Str
43
43
  }
44
44
 
45
45
  fn load_config(run_config: &RunConfig) -> Result<Config, String> {
46
- config_from_path(&run_config.config_path).map_err(|e| e.to_string())
46
+ config_from_run_config(run_config).map_err(|e| e.to_string())
47
47
  }
48
48
 
49
49
  fn build_project(config: &Config, run_config: &RunConfig, cache: &Cache) -> Result<Project, String> {
50
- let mut project_builder = ProjectBuilder::new(
51
- config,
52
- run_config.project_root.clone(),
53
- run_config.codeowners_file_path.clone(),
54
- cache,
55
- );
50
+ use crate::runner::resolve_codeowners_file_path;
51
+ let codeowners_file_path = resolve_codeowners_file_path(run_config, config);
52
+ let mut project_builder = ProjectBuilder::new(config, run_config.project_root.clone(), codeowners_file_path, cache);
56
53
  project_builder.build().map_err(|e| e.to_string())
57
54
  }
58
55
 
@@ -71,10 +71,10 @@ fn teams_by_github_team_name(team_file_glob: Vec<String>) -> HashMap<String, Tea
71
71
  match glob::glob(&glob) {
72
72
  Ok(paths) => {
73
73
  for path in paths.filter_map(Result::ok) {
74
- let team = match Team::from_team_file_path(path) {
74
+ let team = match Team::from_team_file_path(path.clone()) {
75
75
  Ok(team) => team,
76
76
  Err(e) => {
77
- eprintln!("Error parsing team file: {}", e);
77
+ eprintln!("Error parsing team file: {e:?}, path: {}", path.display());
78
78
  continue;
79
79
  }
80
80
  };
@@ -95,7 +95,7 @@ fn build_codeowners_lines_in_priority(codeowners_file_path: String) -> Vec<Strin
95
95
  let codeowners_file = match fs::read_to_string(codeowners_file_path) {
96
96
  Ok(codeowners_file) => codeowners_file,
97
97
  Err(e) => {
98
- // we can't return the error because it's not clonable
98
+ // we can't return the error because it's not cloneable
99
99
  eprintln!("Error reading codeowners file: {}", e);
100
100
  return vec![];
101
101
  }