go_easy_btn 0.0.1
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.
- data/bin/go_easy_btn +12 -0
- data/lib/alerter.rb +23 -0
- data/lib/big_ass_button.rb +61 -0
- metadata +80 -0
data/bin/go_easy_btn
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
=begin
|
4
|
+
Example Usage:
|
5
|
+
Linux: go_easy_btn <cmd> /dev/ttyUSB0
|
6
|
+
Mac: go_easy_btn <cmd> /dev/tty.usbmodem12341
|
7
|
+
=end
|
8
|
+
|
9
|
+
require File.expand_path('../lib/big_ass_button', File.dirname(__FILE__))
|
10
|
+
|
11
|
+
btn = BigAssButton.new :cmd => ARGV[0], :dev => (ARGV[1] || '/dev/tty.usbmodem12341')
|
12
|
+
btn.make_it_easy
|
data/lib/alerter.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
class Alerter
|
2
|
+
class << self
|
3
|
+
def alert(msg, options ={})
|
4
|
+
if mac?
|
5
|
+
system "say -v Cellos \"#{msg}\""
|
6
|
+
elsif linux?
|
7
|
+
system "echo \"#{msg}\"|espeak"
|
8
|
+
else
|
9
|
+
# fuck it
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def mac?
|
16
|
+
RUBY_PLATFORM =~ /darwin/
|
17
|
+
end
|
18
|
+
|
19
|
+
def linux?
|
20
|
+
RUBY_PLATFORM =~ /linux/
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'serialport'
|
3
|
+
require File.expand_path('alerter', File.dirname(__FILE__))
|
4
|
+
|
5
|
+
class BigAssButton
|
6
|
+
BTN_COMMAND = 'PRESSED'
|
7
|
+
|
8
|
+
def initialize(options = {})
|
9
|
+
raise 'not found serial port has been' unless File.exists? options[:dev]
|
10
|
+
@cmd = options[:cmd]
|
11
|
+
@device = options[:dev]
|
12
|
+
@port = options[:port] || 115200
|
13
|
+
@count = 0
|
14
|
+
@start_time = Time.now
|
15
|
+
end
|
16
|
+
|
17
|
+
def make_it_easy
|
18
|
+
puts "Making It Easy™\n\n"
|
19
|
+
SerialPort.open @device, @port do |port|
|
20
|
+
begin
|
21
|
+
while data = port.readline
|
22
|
+
if data.strip == BTN_COMMAND
|
23
|
+
puts border
|
24
|
+
|
25
|
+
Alerter.alert 'I am going to make this easy.'
|
26
|
+
puts "Executing: #{@cmd}"
|
27
|
+
|
28
|
+
success = system @cmd
|
29
|
+
|
30
|
+
msg = success ? "That was easy!" : "Error: #{$?}"
|
31
|
+
Alerter.alert msg
|
32
|
+
puts msg
|
33
|
+
|
34
|
+
puts border
|
35
|
+
@count += 1
|
36
|
+
|
37
|
+
puts stats
|
38
|
+
end
|
39
|
+
end
|
40
|
+
rescue Interrupt, EOFError
|
41
|
+
puts "\rgoing bye bye now"
|
42
|
+
puts stats(true)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def stats(verbose = false)
|
50
|
+
s = "Called #{@count} times\n#{"\n" unless verbose}"
|
51
|
+
if verbose
|
52
|
+
s << "Since: #{@start_time};\n"
|
53
|
+
s << "Uptime: #{sprintf '%.4f', (Time.now.to_f - @start_time.to_f) / 60} mins"
|
54
|
+
end
|
55
|
+
s
|
56
|
+
end
|
57
|
+
|
58
|
+
def border
|
59
|
+
'*'*80
|
60
|
+
end
|
61
|
+
end
|
metadata
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: go_easy_btn
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: 0.0.1
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Josh Nussbaum, Diego Salazar
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2012-11-29 00:00:00 -05:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: serialport
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
version: "0"
|
30
|
+
type: :runtime
|
31
|
+
version_requirements: *id001
|
32
|
+
description: Hook up easy button via USB serial port and trigger shell commands
|
33
|
+
email:
|
34
|
+
- joshnuss@gmail.com
|
35
|
+
- diego@pixelheadstudio.com
|
36
|
+
executables: []
|
37
|
+
|
38
|
+
extensions: []
|
39
|
+
|
40
|
+
extra_rdoc_files: []
|
41
|
+
|
42
|
+
files:
|
43
|
+
- lib/big_ass_button.rb
|
44
|
+
- lib/alerter.rb
|
45
|
+
- bin/go_easy_btn
|
46
|
+
has_rdoc: true
|
47
|
+
homepage: https://github.com/joshnuss/easy-button
|
48
|
+
licenses: []
|
49
|
+
|
50
|
+
post_install_message:
|
51
|
+
rdoc_options: []
|
52
|
+
|
53
|
+
require_paths:
|
54
|
+
- lib
|
55
|
+
- bin
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ~>
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
segments:
|
61
|
+
- 1
|
62
|
+
- 8
|
63
|
+
- 7
|
64
|
+
version: 1.8.7
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
segments:
|
70
|
+
- 0
|
71
|
+
version: "0"
|
72
|
+
requirements: []
|
73
|
+
|
74
|
+
rubyforge_project:
|
75
|
+
rubygems_version: 1.3.6
|
76
|
+
signing_key:
|
77
|
+
specification_version: 3
|
78
|
+
summary: Make things Easy!
|
79
|
+
test_files: []
|
80
|
+
|