Ha 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.DS_Store +0 -0
- data/.byebug_history +11 -0
- data/.gitignore +8 -0
- data/.vscode/launch.json +22 -0
- data/.vscode/settings.json +2 -0
- data/.vscode/tasks.json +44 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +40 -0
- data/Rakefile +10 -0
- data/Readme.md +58 -0
- data/bin/bundle +105 -0
- data/bin/byebug +29 -0
- data/bin/coderay +29 -0
- data/bin/gdb_wrapper +29 -0
- data/bin/ha +28 -0
- data/bin/pry +29 -0
- data/bin/rake +29 -0
- data/bin/rdebug-ide +29 -0
- data/bin/thor +29 -0
- data/exe/ha +4 -0
- data/ha.gemspec +30 -0
- data/lib/ha.rb +22 -0
- data/lib/ha/cli_table.rb +49 -0
- data/lib/ha/context.rb +20 -0
- data/lib/ha/deleteme.rb +12 -0
- data/lib/ha/group.rb +19 -0
- data/lib/ha/hue.rb +78 -0
- data/lib/ha/hue_command.rb +34 -0
- data/lib/ha/hue_resource.rb +13 -0
- data/lib/ha/light.rb +24 -0
- data/lib/ha/rule.rb +19 -0
- data/lib/ha/sensor.rb +33 -0
- data/lib/ha/version.rb +3 -0
- data/test/cli_table_test.rb +32 -0
- data/test/fixtures/state1.json +99 -0
- data/test/fixtures/state2.json +423 -0
- data/test/fixtures/state3.json +938 -0
- data/test/ha_test.rb +11 -0
- data/test/hue_test.rb +18 -0
- data/test/rule_test.rb +24 -0
- data/test/sensor_test.rb +22 -0
- data/test/test_helper.rb +8 -0
- metadata +183 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7432ae24e009389813ab4d6ab4a2aad65838229c6fb2206404389b993c4d1072
|
4
|
+
data.tar.gz: a69893614123fbb68c2e6ec8b128a95927ff32d9bea30a244200f5fba646121d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 37ae52f6e036714cf9a8d26f150229f2aeabbe5566398bcd80916e93fe1a7d4ec32bab465053f720c53c937f5d65ad734d23976798164d66bffd757deb9670d1
|
7
|
+
data.tar.gz: 5cc69f1fe2db8a6d7457e539f5961b3de4c466fe4cc0e33bbdd639a631ad799986b1095487f1ec0f7f3870cc1dbd2427cefed84d8896fd4023b4595bf2328052
|
data/.DS_Store
ADDED
Binary file
|
data/.byebug_history
ADDED
data/.gitignore
ADDED
data/.vscode/launch.json
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
{
|
2
|
+
// Use IntelliSense to learn about possible attributes.
|
3
|
+
// Hover to view descriptions of existing attributes.
|
4
|
+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
5
|
+
"version": "0.2.0",
|
6
|
+
"configurations": [
|
7
|
+
{
|
8
|
+
"name": "Debug Current File",
|
9
|
+
"type": "Ruby",
|
10
|
+
"request": "launch",
|
11
|
+
"cwd": "${workspaceRoot}",
|
12
|
+
"program": "${file}",
|
13
|
+
},
|
14
|
+
{
|
15
|
+
"name": "Debug Local File",
|
16
|
+
"type": "Ruby",
|
17
|
+
"request": "launch",
|
18
|
+
"cwd": "${workspaceRoot}",
|
19
|
+
"program": "${workspaceRoot}/lib/ha.rb",
|
20
|
+
"args": ["hue", "list"]
|
21
|
+
}
|
22
|
+
]
|
data/.vscode/tasks.json
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
{
|
2
|
+
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
3
|
+
// for the documentation about the tasks.json format
|
4
|
+
"version": "2.0.0",
|
5
|
+
"tasks": [
|
6
|
+
{
|
7
|
+
"taskName": "beautify",
|
8
|
+
"type": "shell",
|
9
|
+
"command": "htmlbeautifier ${relativeFile}",
|
10
|
+
"problemMatcher": [],
|
11
|
+
"presentation": {
|
12
|
+
"reveal": "never"
|
13
|
+
}
|
14
|
+
},
|
15
|
+
|
16
|
+
{
|
17
|
+
"taskName": "rubocop",
|
18
|
+
"type": "shell",
|
19
|
+
"command": "rubocop --auto-correct ${relativeFile}",
|
20
|
+
"problemMatcher": [],
|
21
|
+
"presentation": {
|
22
|
+
"reveal": "never"
|
23
|
+
}
|
24
|
+
},
|
25
|
+
{
|
26
|
+
"taskName": "rails c",
|
27
|
+
"type": "shell",
|
28
|
+
"command": "bundle exec rails console",
|
29
|
+
"problemMatcher": [],
|
30
|
+
"presentation": {
|
31
|
+
"reveal": "always"
|
32
|
+
}
|
33
|
+
},
|
34
|
+
{
|
35
|
+
"taskName": "rails s",
|
36
|
+
"type": "shell",
|
37
|
+
"command": "bundle exec rails server",
|
38
|
+
"problemMatcher": [],
|
39
|
+
"presentation": {
|
40
|
+
"reveal": "always"
|
41
|
+
}
|
42
|
+
}
|
43
|
+
]
|
44
|
+
}
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
Ha (0.3.1)
|
5
|
+
faraday (~> 0)
|
6
|
+
thor (~> 0)
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: https://rubygems.org/
|
10
|
+
specs:
|
11
|
+
byebug (10.0.2)
|
12
|
+
coderay (1.1.2)
|
13
|
+
faraday (0.15.3)
|
14
|
+
multipart-post (>= 1.2, < 3)
|
15
|
+
method_source (0.9.0)
|
16
|
+
minitest (5.11.3)
|
17
|
+
multipart-post (2.0.0)
|
18
|
+
pry (0.11.3)
|
19
|
+
coderay (~> 1.1.0)
|
20
|
+
method_source (~> 0.9.0)
|
21
|
+
pry-byebug (3.6.0)
|
22
|
+
byebug (~> 10.0)
|
23
|
+
pry (~> 0.10)
|
24
|
+
rake (0.9.6)
|
25
|
+
ruby-debug-ide (0.6.1)
|
26
|
+
rake (>= 0.8.1)
|
27
|
+
thor (0.20.0)
|
28
|
+
|
29
|
+
PLATFORMS
|
30
|
+
ruby
|
31
|
+
|
32
|
+
DEPENDENCIES
|
33
|
+
Ha!
|
34
|
+
minitest
|
35
|
+
pry-byebug
|
36
|
+
rake (~> 0)
|
37
|
+
ruby-debug-ide (~> 0)
|
38
|
+
|
39
|
+
BUNDLED WITH
|
40
|
+
1.16.6
|
data/Rakefile
ADDED
data/Readme.md
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
# Home Automation
|
2
|
+
|
3
|
+
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/template`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
|
+
|
5
|
+
TODO: Delete this and the text above, and describe your gem
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'template'
|
13
|
+
```
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
$ bundle
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
|
21
|
+
$ gem install template
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
TODO: Write usage instructions here
|
26
|
+
|
27
|
+
## Notes
|
28
|
+
|
29
|
+
### Documentation
|
30
|
+
* https://www.developers.meethue.com/documentation/getting-started
|
31
|
+
|
32
|
+
Get "username" (which is a long hex string) from the bridge using instructions above.
|
33
|
+
|
34
|
+
* Send the following HTTP requests to the ip address of the bridge
|
35
|
+
|
36
|
+
````
|
37
|
+
GET /api/username/lights
|
38
|
+
````
|
39
|
+
|
40
|
+
##### Discover IP address
|
41
|
+
https://discovery.meethue.com -> [{"id":"001788fffe71c27d","internalipaddress":"10.0.0.89"}]
|
42
|
+
|
43
|
+
### Tech Debt
|
44
|
+
*
|
45
|
+
|
46
|
+
## Development
|
47
|
+
|
48
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
49
|
+
|
50
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
51
|
+
|
52
|
+
## Contributing
|
53
|
+
|
54
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/pitosalas/template.
|
55
|
+
|
56
|
+
## License
|
57
|
+
|
58
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/bin/bundle
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'bundle' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "rubygems"
|
12
|
+
|
13
|
+
m = Module.new do
|
14
|
+
module_function
|
15
|
+
|
16
|
+
def invoked_as_script?
|
17
|
+
File.expand_path($0) == File.expand_path(__FILE__)
|
18
|
+
end
|
19
|
+
|
20
|
+
def env_var_version
|
21
|
+
ENV["BUNDLER_VERSION"]
|
22
|
+
end
|
23
|
+
|
24
|
+
def cli_arg_version
|
25
|
+
return unless invoked_as_script? # don't want to hijack other binstubs
|
26
|
+
return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
|
27
|
+
bundler_version = nil
|
28
|
+
update_index = nil
|
29
|
+
ARGV.each_with_index do |a, i|
|
30
|
+
if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
|
31
|
+
bundler_version = a
|
32
|
+
end
|
33
|
+
next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
|
34
|
+
bundler_version = $1 || ">= 0.a"
|
35
|
+
update_index = i
|
36
|
+
end
|
37
|
+
bundler_version
|
38
|
+
end
|
39
|
+
|
40
|
+
def gemfile
|
41
|
+
gemfile = ENV["BUNDLE_GEMFILE"]
|
42
|
+
return gemfile if gemfile && !gemfile.empty?
|
43
|
+
|
44
|
+
File.expand_path("../../Gemfile", __FILE__)
|
45
|
+
end
|
46
|
+
|
47
|
+
def lockfile
|
48
|
+
lockfile =
|
49
|
+
case File.basename(gemfile)
|
50
|
+
when "gems.rb" then gemfile.sub(/\.rb$/, gemfile)
|
51
|
+
else "#{gemfile}.lock"
|
52
|
+
end
|
53
|
+
File.expand_path(lockfile)
|
54
|
+
end
|
55
|
+
|
56
|
+
def lockfile_version
|
57
|
+
return unless File.file?(lockfile)
|
58
|
+
lockfile_contents = File.read(lockfile)
|
59
|
+
return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
|
60
|
+
Regexp.last_match(1)
|
61
|
+
end
|
62
|
+
|
63
|
+
def bundler_version
|
64
|
+
@bundler_version ||= begin
|
65
|
+
env_var_version || cli_arg_version ||
|
66
|
+
lockfile_version || "#{Gem::Requirement.default}.a"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def load_bundler!
|
71
|
+
ENV["BUNDLE_GEMFILE"] ||= gemfile
|
72
|
+
|
73
|
+
# must dup string for RG < 1.8 compatibility
|
74
|
+
activate_bundler(bundler_version.dup)
|
75
|
+
end
|
76
|
+
|
77
|
+
def activate_bundler(bundler_version)
|
78
|
+
if Gem::Version.correct?(bundler_version) && Gem::Version.new(bundler_version).release < Gem::Version.new("2.0")
|
79
|
+
bundler_version = "< 2"
|
80
|
+
end
|
81
|
+
gem_error = activation_error_handling do
|
82
|
+
gem "bundler", bundler_version
|
83
|
+
end
|
84
|
+
return if gem_error.nil?
|
85
|
+
require_error = activation_error_handling do
|
86
|
+
require "bundler/version"
|
87
|
+
end
|
88
|
+
return if require_error.nil? && Gem::Requirement.new(bundler_version).satisfied_by?(Gem::Version.new(Bundler::VERSION))
|
89
|
+
warn "Activating bundler (#{bundler_version}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_version}'`"
|
90
|
+
exit 42
|
91
|
+
end
|
92
|
+
|
93
|
+
def activation_error_handling
|
94
|
+
yield
|
95
|
+
nil
|
96
|
+
rescue StandardError, LoadError => e
|
97
|
+
e
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
m.load_bundler!
|
102
|
+
|
103
|
+
if m.invoked_as_script?
|
104
|
+
load Gem.bin_path("bundler", "bundle")
|
105
|
+
end
|
data/bin/byebug
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'byebug' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("byebug", "byebug")
|
data/bin/coderay
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'coderay' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("coderay", "coderay")
|
data/bin/gdb_wrapper
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'gdb_wrapper' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("ruby-debug-ide", "gdb_wrapper")
|
data/bin/ha
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'ha' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", Pathname.new(__FILE__).realpath)
|
13
|
+
|
14
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
15
|
+
|
16
|
+
if File.file?(bundle_binstub)
|
17
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
18
|
+
load(bundle_binstub)
|
19
|
+
else
|
20
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
21
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
require "rubygems"
|
26
|
+
require "bundler/setup"
|
27
|
+
|
28
|
+
load Gem.bin_path("Ha", "ha")
|