in commands/issuable/list/issuable_list.go [414:451]
func isMatch(issue *gitlab.Issue, opts *gitlab.ListProjectIssuesOptions) bool {
if opts.AssigneeID != nil && !hasAssignee(issue, *opts.AssigneeID) {
return false
}
if opts.NotAssigneeID != nil && hasAssignee(issue, *opts.NotAssigneeID) {
return false
}
if opts.AuthorID != nil && (issue.Author == nil || issue.Author.ID != *opts.AuthorID) {
return false
}
if opts.NotAuthorID != nil && issue.Author != nil && issue.Author.ID == *opts.NotAuthorID {
return false
}
if opts.Labels != nil && !hasAllLabels(issue, []string(*opts.Labels)) {
return false
}
if opts.NotLabels != nil && hasAnyLabel(issue, []string(*opts.NotLabels)) {
return false
}
if opts.Milestone != nil && (issue.Milestone == nil || !strings.EqualFold(issue.Milestone.Title, *opts.Milestone)) {
return false
}
if opts.Search != nil && !strings.Contains(strings.ToLower(issue.Title), strings.ToLower(*opts.Search)) {
return false
}
if opts.IterationID != nil && (issue.Iteration == nil || issue.Iteration.ID != *opts.IterationID) {
return false
}
if !stateMatches(issue, opts) {
return false
}
if opts.Confidential != nil && *opts.Confidential != issue.Confidential {
return false
}
return true
}