From f1aa6352a0d730f8f4dfe36fcacbe4d19d5de5af Mon Sep 17 00:00:00 2001 From: Paul van Tilburg Date: Tue, 2 Feb 2016 17:34:11 +0100 Subject: [PATCH] Add support for non-interactive usage of huec For example: huec scene 1 huec off 2 --- bin/huec | 63 +++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 24 deletions(-) diff --git a/bin/huec b/bin/huec index e63bf97..e7165ec 100755 --- a/bin/huec +++ b/bin/huec @@ -19,6 +19,10 @@ require "rainbow" include Huey +def msg(str="") + puts(str) if @interactive +end + def status_line(blb) mode = [] if blb.reachable @@ -62,14 +66,14 @@ end def lights Huey::Bulb.all.each do |blb| - puts status_line(blb) + msg status_line(blb) end true end def groups Huey::Group.all.each do |grp| - puts "%2d: %s (%s)" % [grp.id, grp.name, grp.bulbs.map(&:id).join(', ')] + msg "%2d: %s (%s)" % [grp.id, grp.name, grp.bulbs.map(&:id).join(', ')] end true end @@ -77,7 +81,7 @@ end def events events_cfg = File.join(@options[:config_dir], "events.yml") Huey::Event.import(events_cfg).each_with_index do |ev, idx| - puts "%2d: %s" % [idx, ev.name] + msg "%2d: %s" % [idx, ev.name] end true end @@ -86,7 +90,7 @@ def scenes @scenes = {} scenes_cfg = File.join(@options[:config_dir], "scenes.yml") YAML.load_file(scenes_cfg).each_with_index do |(name, entry), idx| - puts "%2d: %s" % [idx, name] + msg "%2d: %s" % [idx, name] @scenes[name] = entry.map do |ev_options| # Keys should be symbols options = ev_options.inject({}) { |opts, (k, v)| opts[k.to_sym] = v; opts } @@ -101,7 +105,7 @@ end def refresh! Huey::Bulb.all.each do |blb| blb.reload - puts status_line(blb) + msg status_line(blb) end true end @@ -109,7 +113,7 @@ end def get(*names_or_ids) names_or_ids.map do |name_or_id| blb = Huey::Bulb.find(name_or_id) - puts status_line(blb) + msg status_line(blb) true end end @@ -124,13 +128,13 @@ rescue Huey::Errors::BulbOff blb.update(on: true) retry rescue Huey::Errors::Error => e - puts "Error: #{e.message}" + msg "Error: #{e.message}" end def getgrp(*names_or_ids) names_or_ids.map do |name_or_id| Huey::Group.find(name_or_id).each do |blb| - puts status_line(blb) + msg status_line(blb) end true end @@ -179,7 +183,7 @@ def on(*names_or_ids) end def commands - puts < e abort opt_parser.to_s end -puts "Starting huec #{Hued::VERSION}..." +@interactive = ARGV.empty? + +msg "Starting huec #{Hued::VERSION}..." bridge_cfg = YAML.load_file(File.join(@options[:config_dir], "bridge.yml")) Huey.configure do |cfg| cfg.hue_ip = bridge_cfg["ip"] cfg.uuid = bridge_cfg["user"] end Huey.logger.level = @options[:hue_debug] ? Logger::DEBUG : Logger::FATAL -puts "Configured bridge connection" +msg "Configured bridge connection" -puts "Discovering lights..." +msg "Discovering lights..." lights -puts +msg -puts "Discovering groups..." +msg "Discovering groups..." groups -puts +msg -puts "Loading events..." +msg "Loading events..." events -puts +msg -puts "Loading scenes..." +msg "Loading scenes..." scenes -puts +msg -puts "All done!" -puts "Use 'commands' to see a list of additional commands to pry's." -puts +msg "Loading sensors..." +sensors +msg + +msg "All done!" +msg "Use 'commands' to see a list of additional commands to pry's." +msg @prompt_stamp = Time.now -Pry.config.prompt = proc { "#{prompt_status}> " } -binding.pry(quiet: true) + +if @interactive + Pry.config.prompt = proc { "#{prompt_status}> " } + binding.pry(quiet: true) +else + eval ARGV.join(" ") +end