39: def match(taglists)
40: reports = []
41: taglists.each do |emails, pos, neg|
42:
43: messages = nil
44: if pos.include?("all")
45: messages = self.logs
46: else
47:
48:
49: messages = self.logs.find_all do |log|
50: pos.detect { |tag| log.tagged?(tag) }
51: end
52: end
53:
54:
55: messages = messages.reject do |log|
56: if neg.detect do |tag| log.tagged?(tag) end
57: true
58: end
59: end
60:
61: if messages.empty?
62: Puppet.info "No messages to report to %s" % emails.join(",")
63: next
64: else
65: reports << [emails, messages.collect { |m| m.to_report }.join("\n")]
66: end
67: end
68:
69: return reports
70: end