Check exclude_labels for open and synchronize autolabeling
@@ -35,12 +35,32 @@ pub(super) async fn parse_input(
{
let files = files_changed(&diff);
let mut autolabels = Vec::new();
- for (label, cfg) in config.labels.iter() {
+ 'outer: for (label, cfg) in config.labels.iter() {
if cfg
.trigger_files
.iter()
.any(|f| files.iter().any(|diff_file| diff_file.starts_with(f)))
{
+ let exclude_patterns: Vec<glob::Pattern> = cfg
+ .exclude_labels
+ .iter()
+ .filter_map(|label| match glob::Pattern::new(label) {
+ Ok(exclude_glob) => Some(exclude_glob),
+ Err(error) => {
+ log::error!("Invalid glob pattern: {}", error);
+ None
+ }
+ })
+ .collect();
+ for label in event.issue.labels() {
+ for pat in &exclude_patterns {
+ if pat.matches(&label.name) {
+ // If we hit an excluded label, ignore this autolabel and check the next
+ continue 'outer;
+ }
+ }
+ }
+
autolabels.push(Label {
name: label.to_owned(),
});
