Prepend the config directory to the .yml file paths
This commit is contained in:
parent
8ffb5cf70a
commit
336abfc291
|
@ -8,7 +8,12 @@ module Hued
|
||||||
def initialize(options = {})
|
def initialize(options = {})
|
||||||
@config = Hued.config
|
@config = Hued.config
|
||||||
@log = Hued.log
|
@log = Hued.log
|
||||||
@ctime = Hash.new(Time.now)
|
@ctime = {}
|
||||||
|
@file = {}
|
||||||
|
[:bridge, :events, :scenes, :rules].each do |items|
|
||||||
|
@ctime[items] = Time.now
|
||||||
|
@file[items] = File.join(@config[:config_dir], "#{items}.yml")
|
||||||
|
end
|
||||||
|
|
||||||
configure
|
configure
|
||||||
discover
|
discover
|
||||||
|
@ -18,7 +23,7 @@ module Hued
|
||||||
|
|
||||||
def configure
|
def configure
|
||||||
@log.info "Starting..."
|
@log.info "Starting..."
|
||||||
bridge_cfg = File.open("bridge.yml") { |file| YAML.load(file) }
|
bridge_cfg = YAML.load_file(@file[:bridge])
|
||||||
Huey.configure do |cfg|
|
Huey.configure do |cfg|
|
||||||
cfg.hue_ip = bridge_cfg["ip"]
|
cfg.hue_ip = bridge_cfg["ip"]
|
||||||
cfg.uuid = bridge_cfg["user"]
|
cfg.uuid = bridge_cfg["user"]
|
||||||
|
@ -62,18 +67,18 @@ module Hued
|
||||||
|
|
||||||
def load
|
def load
|
||||||
[:events, :scenes].each do |items|
|
[:events, :scenes].each do |items|
|
||||||
if File.exist? "#{items}.yml"
|
if File.exist? @file[items]
|
||||||
@log.info "Loading #{items}..."
|
@log.info "Loading #{items}..."
|
||||||
send("load_#{items}")
|
send("load_#{items}")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Treat rules separately, we cannot start without it
|
# Treat rules separately, we cannot start without it
|
||||||
if File.exist? "rules.yml"
|
if File.exist? @file[:rules]
|
||||||
@log.info "Loading rules"
|
@log.info "Loading rules"
|
||||||
load_rules
|
load_rules
|
||||||
else
|
else
|
||||||
@log.error "Cannot find required file: rules.yml, aborting!"
|
@log.error "Cannot find required file: #{@file[:rules]}, aborting!"
|
||||||
exit 1
|
exit 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -82,8 +87,8 @@ module Hued
|
||||||
@log.debug "Checking if events/scenes/rules need to be reloaded..."
|
@log.debug "Checking if events/scenes/rules need to be reloaded..."
|
||||||
@reload_rules = false
|
@reload_rules = false
|
||||||
[:events, :scenes].each do |items|
|
[:events, :scenes].each do |items|
|
||||||
if File.exist?("#{items}.yml") and
|
if File.exist?(@file[items]) and
|
||||||
File.ctime("#{items}.yml") > @ctime[items]
|
File.ctime(@file[items]) > @ctime[items]
|
||||||
@log.info "Reloading events..."
|
@log.info "Reloading events..."
|
||||||
send("load_#{items}")
|
send("load_#{items}")
|
||||||
# Rules may depend on events/scenes, reload the rules too!
|
# Rules may depend on events/scenes, reload the rules too!
|
||||||
|
@ -91,8 +96,8 @@ module Hued
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if File.exist?("rules.yml") and
|
if File.exist?(@file[:rules]) and
|
||||||
(@reload_rules or File.ctime("rules.yml") > @ctime[:rules])
|
(@reload_rules or File.ctime(@file[:rules]) > @ctime[:rules])
|
||||||
@log.info "Reloading rules..."
|
@log.info "Reloading rules..."
|
||||||
send("load_rules")
|
send("load_rules")
|
||||||
end
|
end
|
||||||
|
@ -147,8 +152,8 @@ module Hued
|
||||||
private
|
private
|
||||||
|
|
||||||
def load_events
|
def load_events
|
||||||
@ctime[:events] = File.ctime("events.yml")
|
@ctime[:events] = File.ctime(@file[:events])
|
||||||
@events = Huey::Event.import("events.yml")
|
@events = Huey::Event.import(@file[:events])
|
||||||
@events.each do |event|
|
@events.each do |event|
|
||||||
event.actions["on"] = true if event.actions["on"].nil?
|
event.actions["on"] = true if event.actions["on"].nil?
|
||||||
@log.info "* Loaded event: #{event.name}"
|
@log.info "* Loaded event: #{event.name}"
|
||||||
|
@ -160,9 +165,9 @@ module Hued
|
||||||
end
|
end
|
||||||
|
|
||||||
def load_scenes
|
def load_scenes
|
||||||
@ctime[:scenes] = File.ctime "scenes.yml"
|
@ctime[:scenes] = File.ctime(@file[:scenes])
|
||||||
@scenes = {}
|
@scenes = {}
|
||||||
YAML.load_file("scenes.yml").each do |name, entry|
|
YAML.load_file(@file[:scenes]).each do |name, entry|
|
||||||
@scenes[name] = entry.map do |ev_options|
|
@scenes[name] = entry.map do |ev_options|
|
||||||
# Keys should be symbols
|
# Keys should be symbols
|
||||||
options = ev_options.inject({}) { |opts, (k, v)| opts[k.to_sym] = v; opts }
|
options = ev_options.inject({}) { |opts, (k, v)| opts[k.to_sym] = v; opts }
|
||||||
|
@ -180,13 +185,13 @@ module Hued
|
||||||
end
|
end
|
||||||
|
|
||||||
def load_rules
|
def load_rules
|
||||||
@ctime[:rules] = File.ctime "rules.yml"
|
@ctime[:rules] = File.ctime(@file[:rules])
|
||||||
@rules = YAML.load_file("rules.yml").map do |name, entry|
|
@rules =
|
||||||
Rule.new(name, @log, entry)
|
YAML.load_file(@file[:rules]).map do |name, entry|
|
||||||
end
|
rule = Rule.new(name, @log, entry)
|
||||||
@rules.each do |rule|
|
@log.info "* Loaded rule: #{rule.name}"
|
||||||
@log.info "* Loaded rule: #{rule.name}"
|
rule
|
||||||
end
|
end
|
||||||
@log.info "Loaded #{@rules.count} rule#{"s" unless @rules.count == 1}"
|
@log.info "Loaded #{@rules.count} rule#{"s" unless @rules.count == 1}"
|
||||||
rescue => e
|
rescue => e
|
||||||
@log.error "Could not load rules: #{e.message}"
|
@log.error "Could not load rules: #{e.message}"
|
||||||
|
|
Reference in New Issue