Improve logging of active rules

* Mention valid rules and active rules.
* Rename variables accordingly and refactor the trigger related methods.
* Log whether a trigger rule has already been triggered.
This commit is contained in:
Paul van Tilburg 2014-11-15 22:37:13 +01:00
parent e62df9bc36
commit 97e39f333f
1 changed files with 17 additions and 18 deletions

35
hued
View File

@ -76,14 +76,8 @@ class Hued
@triggered @triggered
end end
# If this is a trigger rule, it should only be triggerd if it wasn't
# valid in a previous validity check
def trigger? def trigger?
if @trigger @trigger
!@triggered
else
@validity
end
end end
def execute def execute
@ -245,7 +239,7 @@ class Hued
end end
def execute def execute
@log.debug "Looking for valid rules..." @log.debug "Looking for active (and valid) rules..."
valid_rules = @rules.select(&:valid?) valid_rules = @rules.select(&:valid?)
if valid_rules.empty? if valid_rules.empty?
@log.debug "None found" @log.debug "None found"
@ -263,19 +257,24 @@ class Hued
@log.debug "* Rule#{"s" unless prio_rules.count == 1} with prioity #{prio}: " + @log.debug "* Rule#{"s" unless prio_rules.count == 1} with prioity #{prio}: " +
prio_rules.map(&:name).join(", ") prio_rules.map(&:name).join(", ")
end end
valid_rules_with_highest_prio = prio_map[prios.last] active_rules = prio_map[prios.last]
if valid_rules != valid_rules_with_highest_prio if valid_rules != active_rules
@log.debug "There #{valid_rules_with_highest_prio.count == 1 ? "is" : "are"} " \ @log.debug "There #{active_rules.count == 1 ? "is" : "are"} " \
"only #{valid_rules_with_highest_prio.count} valid " \ "only #{active_rules.count} active " \
"rule#{"s" unless valid_rules_with_highest_prio.count == 1} " \ "rule#{"s" unless active_rules.count == 1}"
"for the hightest priority #{prios.last}" "(i.e. with priority #{prios.last})"
end end
valid_rules_with_highest_prio.each do |rule| active_rules.each do |rule|
if rule.trigger? if rule.trigger?
@log.info "Rule \"#{rule.name}\" is valid and should be triggered, executing..." if rule.triggered?
rule.execute @log.info "Rule \"#{rule.name}\" is active, but has already been triggered"
else
@log.info "Rule \"#{rule.name}\" is active and should be triggered"
rule.execute
end
else else
@log.debug "Rule \"#{rule.name}\" is valid, but should not be triggered (again)" @log.info "Rule \"#{rule.name}\" is active and should be triggered (again)"
rule.execute
end end
end end
end end