light_me_up 0.2.6 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 39bab362a47cb5f1704bca0ee1d34a6e2324e3028f1d4ddd84f8d0481e1e760c
4
- data.tar.gz: 6f397b96f59f316cb94ee1d8f0ba32a1e5cf6207b565e53ad4ce63c9d3395cb0
3
+ metadata.gz: e961aef3afa051d666e6d6058ebd148d78195424ee3651c61a415193dd792dc3
4
+ data.tar.gz: 26d18eea5934f3c9dfdfc2e2be189dc67d2ab63b60c2aaa73bba1d74a8b8fc6e
5
5
  SHA512:
6
- metadata.gz: 526ffbfeec68b717b54d04a0faaad6937c94254d92efe97adf6a77a19a77eb4a80e9d4d2d9d37394b7b67c9a6172d6b07f927b6ee2ac27b4dde9f854dfd9ecfb
7
- data.tar.gz: 5a3e21a2acd5517ffa548411e47c1acf18e29f516d15434fef9e6e7020b48c72f5d3479950df93b1ae6b7a3d9fc8d69cf09830059ae6b115aab63791caecab52
6
+ metadata.gz: 9dfdd4bde34dd55362e68f8c7f7b4399d0142040a47667c72e68b79396c1d3125e451fa06329b1e4aed01fc6ab182b647c13ef636fce79caa78e27e61eb70a08
7
+ data.tar.gz: cbe15d94b545f50e41d72abd443e161472586a5f712db1ff338d03b9ca4bcc60ead4141b72702b904b67980d0bc35ded658f7301310145fb2d2e21d123f92750
data/Gemfile.lock CHANGED
@@ -2,7 +2,7 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  light_me_up (0.2.6)
5
- optimist (~> 3.0)
5
+ optimist
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
@@ -10,25 +10,25 @@ GEM
10
10
  ast (2.4.2)
11
11
  minitest (5.15.0)
12
12
  optimist (3.0.1)
13
- parallel (1.21.0)
14
- parser (3.0.3.2)
13
+ parallel (1.22.1)
14
+ parser (3.1.2.0)
15
15
  ast (~> 2.4.1)
16
- rainbow (3.0.0)
16
+ rainbow (3.1.1)
17
17
  rake (13.0.6)
18
- regexp_parser (2.2.0)
18
+ regexp_parser (2.4.0)
19
19
  rexml (3.2.5)
20
- rubocop (1.24.0)
20
+ rubocop (1.29.0)
21
21
  parallel (~> 1.10)
22
- parser (>= 3.0.0.0)
22
+ parser (>= 3.1.0.0)
23
23
  rainbow (>= 2.2.2, < 4.0)
24
24
  regexp_parser (>= 1.8, < 3.0)
25
- rexml
26
- rubocop-ast (>= 1.15.0, < 2.0)
25
+ rexml (>= 3.2.5, < 4.0)
26
+ rubocop-ast (>= 1.17.0, < 2.0)
27
27
  ruby-progressbar (~> 1.7)
28
28
  unicode-display_width (>= 1.4.0, < 3.0)
29
- rubocop-ast (1.15.0)
30
- parser (>= 3.0.1.1)
31
- rubocop-minitest (0.17.0)
29
+ rubocop-ast (1.17.0)
30
+ parser (>= 3.1.1.0)
31
+ rubocop-minitest (0.19.1)
32
32
  rubocop (>= 0.90, < 2.0)
33
33
  rubocop-rake (0.6.0)
34
34
  rubocop (~> 1.0)
data/bin/light-me-up CHANGED
@@ -21,7 +21,7 @@ options = Optimist.options do
21
21
  opt :toggle, "Toggle whether the lights are on or off", short: "T"
22
22
  opt :on, "Turn the light on"
23
23
  opt :off, "Turn the light off", short: "O"
24
- opt :ip_address, "Specify the IP address", type: :string, default: ENV["ELGATO_IP_ADDRESS"]
24
+ opt :ip_address, "Specify the IP address", type: :string, default: ENV.fetch("ELGATO_IP_ADDRESS", nil)
25
25
  opt :defaults, "Set to default values"
26
26
  opt :brightness, brightness_help, type: :integer
27
27
  opt :temperature, temperature_help, type: :integer
@@ -32,7 +32,7 @@ options[:on] = false if options.delete(:off)
32
32
  if options.delete(:defaults)
33
33
  options = {
34
34
  brightness: ENV["ELGATO_DEFAULT_BRIGHTNESS"].to_i,
35
- temperature: ENV["ELGATO_DEFAULT_TEMPERATURE"].to_i
35
+ temperature: ENV["ELGATO_DEFAULT_TEMPERATURE"].to_i,
36
36
  }.merge(options)
37
37
  end
38
38
 
@@ -9,14 +9,16 @@ module LightMeUp
9
9
  LIGHTS_PATH = "/elgato/lights"
10
10
  OPEN_TIMEOUT = 2 # seconds
11
11
  READ_TIMEOUT = 2 # seconds
12
+ MAX_RETRIES = 2
12
13
 
13
14
  TEMPERATURE_RANGE = (143..344).freeze
14
15
 
15
- def initialize(ip_address:, port: DEFAULT_PORT)
16
+ def initialize(ip_address:, retries: MAX_RETRIES, port: DEFAULT_PORT)
16
17
  raise Error, "No ip_address specified." unless ip_address && ip_address != ""
17
18
 
18
19
  @ip_address = ip_address
19
20
  @port = port
21
+ @max_retries = retries
20
22
  end
21
23
 
22
24
  def status
@@ -58,7 +60,7 @@ module LightMeUp
58
60
 
59
61
  private
60
62
 
61
- attr_reader :ip_address, :port, :connection
63
+ attr_reader :ip_address, :port, :connection, :max_retries
62
64
 
63
65
  def lights_uri
64
66
  URI::HTTP.build(host: ip_address, port: port, path: LIGHTS_PATH)
@@ -90,13 +92,25 @@ module LightMeUp
90
92
  !!@connection
91
93
  end
92
94
 
93
- def with_connection
95
+ def with_connection(&block)
96
+ retries = 0
97
+ begin
98
+ start_connection(&block)
99
+ rescue Errno::EHOSTDOWN
100
+ raise Error, "Couldn't connect to lights."
101
+ rescue Net::OpenTimeout
102
+ raise Error, "Timeout connecting to lights." if retries >= max_retries
103
+
104
+ retries += 1
105
+ retry
106
+ end
107
+ end
108
+
109
+ def start_connection
94
110
  Net::HTTP.start(ip_address, port, open_timeout: OPEN_TIMEOUT, read_timeout: READ_TIMEOUT) do |connection|
95
111
  @connection = connection
96
112
  yield
97
113
  end
98
- rescue Errno::EHOSTDOWN, Net::OpenTimeout
99
- raise Error, "Couldn't connect to lights."
100
114
  ensure
101
115
  @connection = nil
102
116
  end
@@ -40,8 +40,8 @@ module LightMeUp
40
40
  def scale_value(value, src_range, dest_range)
41
41
  return nil unless value
42
42
 
43
- scale_ratio = dest_range.size.to_f / src_range.size.to_f
44
- (dest_range.min + scale_ratio * (value - src_range.min)).round
43
+ scale_ratio = dest_range.size.to_f / src_range.size
44
+ (dest_range.min + (scale_ratio * (value - src_range.min))).round
45
45
  end
46
46
  end
47
47
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LightMeUp
4
- VERSION = "0.2.6"
4
+ VERSION = "0.2.7"
5
5
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: light_me_up
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter McCracken
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-27 00:00:00.000000000 Z
11
+ date: 2022-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: optimist
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.0'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '3.0'
26
+ version: '0'
27
27
  description: Provides the ability to turn on and off, and adjust brightness and temperature,
28
28
  on a key light.
29
29
  email:
@@ -74,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  requirements: []
77
- rubygems_version: 3.2.32
77
+ rubygems_version: 3.3.7
78
78
  signing_key:
79
79
  specification_version: 4
80
80
  summary: Command line control for a brand name key light.