fast_code_owners 0.0.8 → 0.0.10

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c1fbb547b09a3db08955b844eab13bc6de6a0bce7ee62cc695e40e256f064794
4
- data.tar.gz: 55d0546e097fdb8ebec9b75626d70467f0ff245abc5daadb0c1ad0df4d3e5ecb
3
+ metadata.gz: 53e3384e2f1c996ba3bd2b1520b1128bf4493d41e82dac06dfc4aa45aa801206
4
+ data.tar.gz: b8f53467471fc2fe763e686217994fed8e88cbdc419a4f57153f725af0bdfb30
5
5
  SHA512:
6
- metadata.gz: b1752b9eb31a6ab0c8682090092c0cf0c74ac0e916e79bcd747e936908e409cf8248ca7c6a8e62af2d775eb66bd78a03ab8c1fac0fcc3661b5965624c2250686
7
- data.tar.gz: dd4318cede9002c9154a75ec2b13d2c4a8ca595661b4d6084667dda96f98adf4056f04dad55c1a25550d78822358afc43a21e6a241f87b17adc03a6937a2ca0e
6
+ metadata.gz: 4df54cb92903fb958be9b4d21cfe327314ed7785a3a0e14c43a6fc3c026eccfea0d23b7e5659a219b3df626dffd4d72b4871eaf429f7a02d9f3547c26d5bf6d7
7
+ data.tar.gz: 4e2b9d0db2f3a57ee9ddb91fc0c03e5816df21a9f3f5182031c0f81c773c91baa0e769039f584a6f39175dd9cd9a760174a65160624ff6804b850430d2d4419f
data/Cargo.lock CHANGED
@@ -189,7 +189,7 @@ checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675"
189
189
  [[package]]
190
190
  name = "codeowners"
191
191
  version = "0.2.5"
192
- source = "git+https://github.com/rubyatscale/codeowners-rs.git?branch=ph.fast-file-check#1bf9386fb74db524d43011cc8d85360ecf43f0a3"
192
+ source = "git+https://github.com/rubyatscale/codeowners-rs.git?branch=ph.fast-file-check#e036be557cf8a91bb9259bd0f06926ef22bc1441"
193
193
  dependencies = [
194
194
  "clap",
195
195
  "clap_derive",
@@ -298,7 +298,7 @@ dependencies = [
298
298
 
299
299
  [[package]]
300
300
  name = "fast_code_owners"
301
- version = "0.1.0"
301
+ version = "0.1.1"
302
302
  dependencies = [
303
303
  "codeowners",
304
304
  "magnus",
@@ -1 +1 @@
1
- {"files":{".github/workflows/audit.yml":"bde77859031fa481da1fcaf399129b64819d78a0ffbbb2d4c4f5346f4a4dec7e",".github/workflows/ci.yml":"a4b503d5b650f4d59d7e02b3a33f623c373f1ae8c892b6ddcc47b271b7d109db",".github/workflows/dotslash-config.json":"21dbdefc13a01f3aad42923963b9025907d4049d8e75b18208e887f9e601e381",".rustfmt.toml":"394616646760b18ed094433d39e18b7d94986347c21790708bff9ab001f38e0b",".rusty-hook.toml":"9d3d8a8f4f20d80682ce71889a17eb5ba204f4636f27211fafcb6c6b5af5c2bb","Cargo.lock":"13b3503427ab09ad422f8c79bdc03993c2bb89041ae4a9145380321436b5f185","Cargo.toml":"f7c6017dc1d06e2131fbe10a76b0f93fa1253e48496643e55d6899619ad738f7","README.md":"84c2b0f58f5880062b3668fc49bccc8300be209b448340a7fde075bdce5e6fb5","ai-prompts/for-file-optimization.md":"e4c758898de368b9864174fa9bcf0696812b0829e11abda3ef823c4056e237be","dev/run_benchmarks.sh":"81f905201c41e661e4c8208a17f8a4f942b9dcf8becb7b27cadb4ee83283164b","rust-toolchain.toml":"2376c9760d9e4f7ad6a1c27ab074f466872a3b976da1a1652967c6a5eaa65f28","src/bin/compare_for_file.rs":"3ab4adb258f6c6eafcc3689a03d48d9561560e1330c23ba4ef9e8f37645f8ce5","src/cache/file.rs":"b806ba1c8f6f97f6185fd41862da00f8687a8d252b0cc1e8f325b1c9761f6d42","src/cache/mod.rs":"622ad6effc3260c922fe49f3800e0d1c5b3c6a73c81d567296ea6cb550792d32","src/cache/noop.rs":"abfddf1c20cbaca5dd432952d0ff0a0a1d92eb0070866d343e368f29cdd22de9","src/cli.rs":"8e883c291369dd72eff33884db6433a78ef84d902e5f9f475b8a85c50cc071dc","src/common_test.rs":"dfa10d48dc2c5e63b029bfb56ab2d653fc9d07e6ee37859383b9a1d2f55e6c16","src/config.rs":"ad0046ad359dc545c6f06ba61d08e773b7074a5277f8c06e4b34d134f9bbdebc","src/lib.rs":"d48bdfa06836a217b9c0fea3c499e343aea9b50ea939c6b6ad6f2ab664e3da0e","src/main.rs":"ea738dd470e3d8cdf46cbfb397cf5b27c212e0ea94e8d7c2d9c7ea163bbdde65","src/ownership.rs":"30e788b08d2c7ca3df75a3f6c410596848fe54c40e548f9c3dec36aae91d6cae","src/ownership/file_generator.rs":"be57f0fe6208bb810bafa59a3c782e8337d099d02728214e932ca2fe620ddb5d","src/ownership/file_owner_finder.rs":"104626da603ddcaccb217387f13141c81fb768b41cf8b7fbc5f65809f487231b","src/ownership/for_file_fast.rs":"9b7d968e43f1dadf1f371dc0c5254bac7f417ee516394aef4f059e9caf886e14","src/ownership/mapper.rs":"f313ae6cc6bfe57a4837475655fbce1ea7a715231df05fa15570741431fa53b5","src/ownership/mapper/directory_mapper.rs":"a86866b518efbfdbb056a2d472c981eec875f2ddca5899f029405b76e875b018","src/ownership/mapper/escaper.rs":"2faa41beefedca26d493e8d8f68882384ddbb2c4b108953f30b960847a3f841c","src/ownership/mapper/package_mapper.rs":"290e27c6f8f8d1ff072a6341db3029f70cd5214398c103becd55189a744a7f3e","src/ownership/mapper/team_file_mapper.rs":"d9bb2bd7201ae38c626cd9ceff07b221477980a04f7f56cb3bd961d2729b90e8","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/parser.rs":"82fc23b22bfe046127b98d875196a406dffaad55e1dd120e3b37a1beb1e54e12","src/ownership/tests.rs":"2d4cf9995be92aab8329b35a7c1181091c08724e24d42527358496d7422df35d","src/ownership/validator.rs":"c710c5f3369b2bbb00c72aa7743a4e908b11dd68bacaf5404d87820f531433d0","src/project.rs":"e97b4f0f6a0e3ccba1bda088207766d30026d99c0ae25fa56d119e45e8faaa28","src/project_builder.rs":"c048962bec93c1be487cb578c4f9f9254b02fed5f7a55fa2f6414558388c3ba4","src/project_file_builder.rs":"c93ecc878178281180e64a5b01e1934634f85502545ef6478f5252a7c1b67f62","src/runner.rs":"e8126328fe26a79514e209f24aed296c650f439600850e9cccf0f90381cc7416","tests/cache_test.rs":"80b900f38e177eb8c9e162b9373cd1d7c3a551baade716a1b07554a021bfef05","tests/common/mod.rs":"41f2a3a2e886ea2ebc2a58f9b682d4eaa4dc6874297d219364404d00a034d7da","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/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":"fc9679f69ed09090e104341c7d6635c050e81472370acb504a3a42040a48332f","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":"c8e86365c334ac5aeb1d41a579a7f20236b79b4c0cd0e706b8d48a91fb31b641","tests/fixtures/valid_project/.ignore":"68f30767f9c87c700952d52d9d39693e1a98efb6c07a0b9216fbc87d173ebb5e","tests/fixtures/valid_project/config/code_ownership.yml":"a336d56f500203588631ee9f48101f99adf476a3fd786d74cb30e6c9060ae3b3","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/ruby/app/models/bank_account.rb":"0832b2e95f90fa7ebd8dcbfd53c05618f091d38abf5dd238bd4d41645746160d","tests/fixtures/valid_project/ruby/app/models/payroll.rb":"7f48f8730fd738a2760ee81be8a6028cccb3c6c38be0433c7fd81a4bdd631b60","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/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/invalid_project_structure_test.rs":"af048ddfa756bc2e187ea885ea533a4b67907c5bcc531a082ffceca0728649b4","tests/invalid_project_test.rs":"e62b8129d1af0a5a66ced9547dd1e67f17c42980e2b975205909a4530ec3b8db","tests/multiple_directory_owners_test.rs":"bee053097f88481454ad38349e23e716bc44874348b5f4b67687004c9cb9e52f","tests/valid_project_test.rs":"17df92c5a07c8f1c2b1f243a43927c7fe3e0cba3573996fbb77bb7a19aecab62","tmp/.gitkeep":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"package":null}
1
+ {"files":{".github/workflows/audit.yml":"bde77859031fa481da1fcaf399129b64819d78a0ffbbb2d4c4f5346f4a4dec7e",".github/workflows/ci.yml":"a4b503d5b650f4d59d7e02b3a33f623c373f1ae8c892b6ddcc47b271b7d109db",".github/workflows/dotslash-config.json":"21dbdefc13a01f3aad42923963b9025907d4049d8e75b18208e887f9e601e381",".rustfmt.toml":"394616646760b18ed094433d39e18b7d94986347c21790708bff9ab001f38e0b",".rusty-hook.toml":"9d3d8a8f4f20d80682ce71889a17eb5ba204f4636f27211fafcb6c6b5af5c2bb","Cargo.lock":"13b3503427ab09ad422f8c79bdc03993c2bb89041ae4a9145380321436b5f185","Cargo.toml":"f7c6017dc1d06e2131fbe10a76b0f93fa1253e48496643e55d6899619ad738f7","README.md":"84c2b0f58f5880062b3668fc49bccc8300be209b448340a7fde075bdce5e6fb5","ai-prompts/for-file-optimization.md":"e4c758898de368b9864174fa9bcf0696812b0829e11abda3ef823c4056e237be","dev/run_benchmarks.sh":"81f905201c41e661e4c8208a17f8a4f942b9dcf8becb7b27cadb4ee83283164b","rust-toolchain.toml":"2376c9760d9e4f7ad6a1c27ab074f466872a3b976da1a1652967c6a5eaa65f28","src/bin/compare_for_file.rs":"3ab4adb258f6c6eafcc3689a03d48d9561560e1330c23ba4ef9e8f37645f8ce5","src/cache/file.rs":"b806ba1c8f6f97f6185fd41862da00f8687a8d252b0cc1e8f325b1c9761f6d42","src/cache/mod.rs":"622ad6effc3260c922fe49f3800e0d1c5b3c6a73c81d567296ea6cb550792d32","src/cache/noop.rs":"abfddf1c20cbaca5dd432952d0ff0a0a1d92eb0070866d343e368f29cdd22de9","src/cli.rs":"8e883c291369dd72eff33884db6433a78ef84d902e5f9f475b8a85c50cc071dc","src/common_test.rs":"dfa10d48dc2c5e63b029bfb56ab2d653fc9d07e6ee37859383b9a1d2f55e6c16","src/config.rs":"ad0046ad359dc545c6f06ba61d08e773b7074a5277f8c06e4b34d134f9bbdebc","src/lib.rs":"d48bdfa06836a217b9c0fea3c499e343aea9b50ea939c6b6ad6f2ab664e3da0e","src/main.rs":"ea738dd470e3d8cdf46cbfb397cf5b27c212e0ea94e8d7c2d9c7ea163bbdde65","src/ownership.rs":"22ce2ecab5226a86eccf91cea0c2c679115ddaf764d81910ff001722c391f391","src/ownership/file_generator.rs":"be57f0fe6208bb810bafa59a3c782e8337d099d02728214e932ca2fe620ddb5d","src/ownership/file_owner_finder.rs":"104626da603ddcaccb217387f13141c81fb768b41cf8b7fbc5f65809f487231b","src/ownership/for_file_fast.rs":"4ed19d8dec2b2e1593502a54aaae244a9d600602069fddfe962efb547f788290","src/ownership/mapper.rs":"f313ae6cc6bfe57a4837475655fbce1ea7a715231df05fa15570741431fa53b5","src/ownership/mapper/directory_mapper.rs":"a86866b518efbfdbb056a2d472c981eec875f2ddca5899f029405b76e875b018","src/ownership/mapper/escaper.rs":"2faa41beefedca26d493e8d8f68882384ddbb2c4b108953f30b960847a3f841c","src/ownership/mapper/package_mapper.rs":"290e27c6f8f8d1ff072a6341db3029f70cd5214398c103becd55189a744a7f3e","src/ownership/mapper/team_file_mapper.rs":"d9bb2bd7201ae38c626cd9ceff07b221477980a04f7f56cb3bd961d2729b90e8","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/parser.rs":"82fc23b22bfe046127b98d875196a406dffaad55e1dd120e3b37a1beb1e54e12","src/ownership/tests.rs":"2d4cf9995be92aab8329b35a7c1181091c08724e24d42527358496d7422df35d","src/ownership/validator.rs":"c710c5f3369b2bbb00c72aa7743a4e908b11dd68bacaf5404d87820f531433d0","src/project.rs":"c44eca21365a9202131ac11f51b38bb9946da9ba39d0ec2c923273107007cedc","src/project_builder.rs":"c048962bec93c1be487cb578c4f9f9254b02fed5f7a55fa2f6414558388c3ba4","src/project_file_builder.rs":"c93ecc878178281180e64a5b01e1934634f85502545ef6478f5252a7c1b67f62","src/runner.rs":"862f61fa9daf4d587f5bb0b5117dbecf7566b8d0ba669df1f12228f12c2d77c0","tests/cache_test.rs":"80b900f38e177eb8c9e162b9373cd1d7c3a551baade716a1b07554a021bfef05","tests/common/mod.rs":"41f2a3a2e886ea2ebc2a58f9b682d4eaa4dc6874297d219364404d00a034d7da","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/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":"fc9679f69ed09090e104341c7d6635c050e81472370acb504a3a42040a48332f","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":"c8e86365c334ac5aeb1d41a579a7f20236b79b4c0cd0e706b8d48a91fb31b641","tests/fixtures/valid_project/.ignore":"68f30767f9c87c700952d52d9d39693e1a98efb6c07a0b9216fbc87d173ebb5e","tests/fixtures/valid_project/config/code_ownership.yml":"a336d56f500203588631ee9f48101f99adf476a3fd786d74cb30e6c9060ae3b3","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/ruby/app/models/bank_account.rb":"0832b2e95f90fa7ebd8dcbfd53c05618f091d38abf5dd238bd4d41645746160d","tests/fixtures/valid_project/ruby/app/models/payroll.rb":"7f48f8730fd738a2760ee81be8a6028cccb3c6c38be0433c7fd81a4bdd631b60","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/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/invalid_project_structure_test.rs":"af048ddfa756bc2e187ea885ea533a4b67907c5bcc531a082ffceca0728649b4","tests/invalid_project_test.rs":"e62b8129d1af0a5a66ced9547dd1e67f17c42980e2b975205909a4530ec3b8db","tests/multiple_directory_owners_test.rs":"bee053097f88481454ad38349e23e716bc44874348b5f4b67687004c9cb9e52f","tests/valid_project_test.rs":"17df92c5a07c8f1c2b1f243a43927c7fe3e0cba3573996fbb77bb7a19aecab62","tmp/.gitkeep":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"package":null}
@@ -123,7 +123,7 @@ fn load_teams(project_root: &Path, team_file_globs: &[String]) -> std::result::R
123
123
  match Team::from_team_file_path(path.clone()) {
124
124
  Ok(team) => teams.push(team),
125
125
  Err(e) => {
126
- eprintln!("Error parsing team file: {}", e);
126
+ eprintln!("Error parsing team file: {}, path: {}", e, path.display());
127
127
  continue;
128
128
  }
129
129
  }
@@ -33,7 +33,7 @@ use self::{
33
33
  pub struct Ownership {
34
34
  project: Arc<Project>,
35
35
  }
36
-
36
+ #[derive(Debug)]
37
37
  pub struct FileOwner {
38
38
  pub team: Team,
39
39
  pub team_config_file_path: String,
@@ -178,9 +178,7 @@ impl Project {
178
178
  }
179
179
 
180
180
  pub fn relative_path<'a>(&'a self, absolute_path: &'a Path) -> &'a Path {
181
- absolute_path
182
- .strip_prefix(&self.base_path)
183
- .expect("Could not generate relative path")
181
+ absolute_path.strip_prefix(&self.base_path).unwrap_or(absolute_path)
184
182
  }
185
183
 
186
184
  pub fn get_team(&self, name: &str) -> Option<Team> {
@@ -87,8 +87,7 @@ pub fn team_for_file_from_codeowners(run_config: &RunConfig, file_path: &str) ->
87
87
  pub fn team_for_file(run_config: &RunConfig, file_path: &str) -> Result<Option<Team>, Error> {
88
88
  let config = config_from_path(&run_config.config_path)?;
89
89
  use crate::ownership::for_file_fast::find_file_owners;
90
- let owners = find_file_owners(&run_config.project_root, &config, std::path::Path::new(file_path))
91
- .map_err(Error::Io)?;
90
+ let owners = find_file_owners(&run_config.project_root, &config, std::path::Path::new(file_path)).map_err(Error::Io)?;
92
91
 
93
92
  Ok(owners.first().map(|fo| fo.team.clone()))
94
93
  }
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "fast_code_owners"
3
- version = "0.1.0"
3
+ version = "0.1.1"
4
4
  edition = "2024"
5
5
  authors = ["Perry Hertler <perry.hertler@gusto.com>"]
6
6
  publish = false
@@ -18,7 +18,6 @@ magnus = { version = "0.7.1" }
18
18
  serde = { version = "1.0.219", features = ["derive"] }
19
19
  serde_magnus = "0.9.0"
20
20
  codeowners = { git = "https://github.com/rubyatscale/codeowners-rs.git", branch = "ph.fast-file-check" }
21
- #codeowners = { path = "../../../codeowners-rs" }
22
21
 
23
22
  [dev-dependencies]
24
23
  rb-sys = { version = "0.9.117", features = [
@@ -11,6 +11,12 @@ pub struct Team {
11
11
  pub team_config_yml: String,
12
12
  }
13
13
 
14
+ fn for_team(team_name: String) -> Result<Value, Error> {
15
+ let run_config = build_run_config();
16
+ let team = runner::for_team(&run_config, &team_name);
17
+ validate_result(&team)
18
+ }
19
+
14
20
  fn for_file(file_path: String) -> Result<Option<Value>, Error> {
15
21
  let run_config = build_run_config();
16
22
 
@@ -31,11 +37,19 @@ fn for_file(file_path: String) -> Result<Option<Value>, Error> {
31
37
  }
32
38
  }
33
39
 
34
- // Needed for tests
40
+ fn validate() -> Result<Value, Error> {
41
+ let run_config = build_run_config();
42
+ let run_result = runner::validate(&run_config, vec![]);
43
+ validate_result(&run_result)
44
+ }
45
+
35
46
  fn generate_and_validate() -> Result<Value, Error> {
36
47
  let run_config = build_run_config();
37
48
  let run_result = runner::generate_and_validate(&run_config, vec![]);
38
- dbg!(&run_result);
49
+ validate_result(&run_result)
50
+ }
51
+
52
+ fn validate_result(run_result: &runner::RunResult) -> Result<Value, Error> {
39
53
  if !run_result.validation_errors.is_empty() {
40
54
  Err(Error::new(
41
55
  magnus::exception::runtime_error(),
@@ -51,7 +65,6 @@ fn generate_and_validate() -> Result<Value, Error> {
51
65
  Ok(serialized)
52
66
  }
53
67
  }
54
-
55
68
  fn build_run_config() -> RunConfig {
56
69
  let project_root = match env::current_dir() {
57
70
  Ok(path) => path,
@@ -73,6 +86,8 @@ fn init(ruby: &Ruby) -> Result<(), Error> {
73
86
  let module = ruby.define_module("RustCodeOwners")?;
74
87
  module.define_singleton_method("for_file", function!(for_file, 1))?;
75
88
  module.define_singleton_method("generate_and_validate", function!(generate_and_validate, 0))?;
89
+ module.define_singleton_method("validate", function!(validate, 0))?;
90
+ module.define_singleton_method("for_team", function!(for_team, 1))?;
76
91
 
77
92
  Ok(())
78
93
  }
@@ -3,6 +3,7 @@
3
3
  require 'optparse'
4
4
  require 'pathname'
5
5
  require 'fileutils'
6
+ require 'json'
6
7
 
7
8
  module FastCodeOwners
8
9
  class Cli
@@ -16,7 +17,7 @@ module FastCodeOwners
16
17
  for_team(argv)
17
18
  elsif [nil, 'help'].include?(command)
18
19
  puts <<~USAGE
19
- Usage: bin/codeownership <subcommand>
20
+ Usage: bin/codeowners <subcommand>
20
21
 
21
22
  Subcommands:
22
23
  validate - run all validations
@@ -25,7 +26,7 @@ module FastCodeOwners
25
26
  help - display help information about code_ownership
26
27
  USAGE
27
28
  else
28
- puts "'#{command}' is not a code_ownership command. See `bin/codeownership help`."
29
+ puts "'#{command}' is not a code_ownership command. See `bin/codeowners help`."
29
30
  end
30
31
  end
31
32
 
@@ -33,7 +34,7 @@ module FastCodeOwners
33
34
  options = {}
34
35
 
35
36
  parser = OptionParser.new do |opts|
36
- opts.banner = 'Usage: bin/codeownership validate [options]'
37
+ opts.banner = 'Usage: bin/codeowners validate [options]'
37
38
 
38
39
  opts.on('--skip-autocorrect', 'Skip automatically correcting any errors, such as the .github/CODEOWNERS file') do
39
40
  options[:skip_autocorrect] = true
@@ -81,7 +82,7 @@ module FastCodeOwners
81
82
  files = argv.reject { |arg| arg.start_with?('--') }
82
83
 
83
84
  parser = OptionParser.new do |opts|
84
- opts.banner = 'Usage: bin/codeownership for_file [options]'
85
+ opts.banner = 'Usage: bin/codeowners for_file [options]'
85
86
 
86
87
  opts.on('--json', 'Output as JSON') do
87
88
  options[:json] = true
@@ -96,7 +97,7 @@ module FastCodeOwners
96
97
  parser.parse!(args)
97
98
 
98
99
  if files.count != 1
99
- raise 'Please pass in one file. Use `bin/codeownership for_file --help` for more info'
100
+ raise 'Please pass in one file. Use `bin/codeowners for_file --help` for more info'
100
101
  end
101
102
 
102
103
  team = FastCodeOwners.for_file(files.first)
@@ -121,7 +122,7 @@ module FastCodeOwners
121
122
 
122
123
  def self.for_team(argv)
123
124
  parser = OptionParser.new do |opts|
124
- opts.banner = 'Usage: bin/codeownership for_team \'Team Name\''
125
+ opts.banner = 'Usage: bin/codeowners for_team \'Team Name\''
125
126
 
126
127
  opts.on('--help', 'Shows this prompt') do
127
128
  puts opts
@@ -133,10 +134,10 @@ module FastCodeOwners
133
134
  parser.parse!(args)
134
135
 
135
136
  if teams.count != 1
136
- raise 'Please pass in one team. Use `bin/codeownership for_team --help` for more info'
137
+ raise 'Please pass in one team. Use `bin/codeowners for_team --help` for more info'
137
138
  end
138
139
 
139
- puts FastCodeOwners.for_team(teams.first)
140
+ puts FastCodeOwners.for_team(teams.first).join("\n")
140
141
  end
141
142
 
142
143
  private_class_method :validate!
@@ -15,10 +15,10 @@ module FastCodeOwners
15
15
  def for_file(file_path)
16
16
  return nil if file_path.start_with?('./')
17
17
 
18
- # return FilePathTeamCache.get(file_path) if FilePathTeamCache.cached?(file_path)
18
+ return FilePathTeamCache.get(file_path) if FilePathTeamCache.cached?(file_path)
19
+
19
20
  result = T.let(RustCodeOwners.for_file(file_path), T.nilable(T::Hash[Symbol, String]))
20
21
  return if result.nil?
21
- puts "ruby result: #{result}"
22
22
 
23
23
  if result[:team_name].nil?
24
24
  FilePathTeamCache.set(file_path, nil)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FastCodeOwners
4
- VERSION = '0.0.8'
4
+ VERSION = '0.0.10'
5
5
  end
@@ -30,14 +30,18 @@ module FastCodeOwners
30
30
  autocorrect: T::Boolean,
31
31
  stage_changes: T::Boolean,
32
32
  files: T.nilable(T::Array[String])
33
- ).void
33
+ ).returns(T.nilable(T::Hash[Symbol, String]))
34
34
  end
35
35
  def validate!(
36
36
  autocorrect: true,
37
37
  stage_changes: true,
38
38
  files: nil
39
39
  )
40
- # todo
40
+ if autocorrect
41
+ ::RustCodeOwners.generate_and_validate
42
+ else
43
+ ::RustCodeOwners.validate
44
+ end
41
45
  end
42
46
 
43
47
  sig { params(file_path: String).returns(T.nilable(CodeTeams::Team)) }
@@ -69,6 +73,12 @@ module FastCodeOwners
69
73
  TeamFinder.first_owned_file_for_backtrace(backtrace, excluded_teams: excluded_teams)
70
74
  end
71
75
 
76
+ sig { params(team: T.any(CodeTeams::Team, String)).returns(String) }
77
+ def for_team(team)
78
+ team = T.must(CodeTeams.find(team)) if team.is_a?(String)
79
+ ::RustCodeOwners.for_team(team.name)
80
+ end
81
+
72
82
  sig { void }
73
83
  def bust_cache!
74
84
  FilePathTeamCache.bust_cache!
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fast_code_owners
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Perry Hertler