* README.md: drop trailing whitespace
* Add 'changed-files-labels-limit' config to allow capping number of labels added
When a repository has many components, each with a changed-files label,
a large refactor ends up with the labeler spamming the pull request
with label changes. The end result is not very useful as it's not
very readable, and due to how github automatically hides comments
when label changes overflow the discussion tab, it means useful
information is hidden and one has to manually click "Load more..."
dozens of time every time the page is loaded.
Add a changed-files-labels-limit top level config knob. If more than the
configured limit of labels is set to be added, none are added.
This only affects changed-files labels.
* Add 'max-files-changed' config to allow capping number of files for labelling
When a PR modifies a very large number of files (e.g., tree-wide
refactors, automated code formatting), this new options allows
skipping file-based labeling entirely when the number of files
that are changed hits the configured limit.
Fixes https://github.com/actions/labeler/issues/486
* Update README.md and labeler.ts to clarify permissions for GitHub Labeler Action
* Update dist/index.js with latest build changes
* Update README.md to clarify manual label creation as an alternative to granting issues write permission
* Fix labeler error handling to ensure case-insensitive check for unauthorized access
* Refactor error handling in labeler to throw an error for unauthorized access instead of logging
* Add tests for labeler error handling and improve error reporting
This is not intended to be a comprehensive test suite; I'm just trying to get us started by adding tests for some of the most important functionality.
This necessitated some minor refactoring. Previously, `main.ts` just directly invoked the main entrypoint function `run()`, which made it impossible to unit test the module without causing the side-effects of `run`.
As a workaround I created a new module `labeler.ts`, which just exports the functions we want to test without executing the main entrypoint, and simplified `main.ts` so that it only imports the entrypoint and executes it.
It's basically just a re-org. The diff makes it look way more complicated than it is.