rupi 0.0.1 → 0.1.0
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/rupi_service +66 -0
- data/lib/rupi/pin.rb +11 -0
- data/lib/rupi/version.rb +1 -1
- metadata +42 -2
data/bin/rupi_service
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'rupi'
|
5
|
+
require 'daemons'
|
6
|
+
require 'yaml'
|
7
|
+
|
8
|
+
include Rupi
|
9
|
+
|
10
|
+
def sudome
|
11
|
+
return if ENV["USER"] == 'root'
|
12
|
+
exec("rvmsudo #{ENV['_']} #{ARGV.join(' ')}")
|
13
|
+
end
|
14
|
+
|
15
|
+
if ARGV[0] == 'install'
|
16
|
+
file_name = ARGV[1]
|
17
|
+
|
18
|
+
if file_name.nil?
|
19
|
+
puts "please specify a rupi script to run"
|
20
|
+
exit(1)
|
21
|
+
end
|
22
|
+
|
23
|
+
file_name = File.absolute_path(file_name)
|
24
|
+
|
25
|
+
unless File.exist?(file_name)
|
26
|
+
puts "#{file_name} not found"
|
27
|
+
exit(1)
|
28
|
+
end
|
29
|
+
|
30
|
+
sudome
|
31
|
+
|
32
|
+
File.open('/etc/rupi_service.yml', 'w') do |config|
|
33
|
+
config.write(YAML::dump('path' => file_name))
|
34
|
+
end
|
35
|
+
|
36
|
+
system('rvm wrapper 1.9.3 init rupi_service')
|
37
|
+
system('mv `which init_rupi_service` /etc/init.d/rupi_service')
|
38
|
+
system('update-rc.d rupi_service defaults')
|
39
|
+
system('/etc/init.d/rupi_service restart')
|
40
|
+
exit
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
Daemons.run_proc('rupi_service') do
|
45
|
+
config = YAML.load(File.read('/etc/rupi_service.yml'))
|
46
|
+
file_name = config['path']
|
47
|
+
update_at = nil
|
48
|
+
run_thread = nil
|
49
|
+
|
50
|
+
loop do
|
51
|
+
new_updated_at = File.mtime(file_name).to_i
|
52
|
+
|
53
|
+
if new_updated_at != update_at
|
54
|
+
Rupi::Pin.unwatch(:all)
|
55
|
+
Rupi::Pin.stop_watching
|
56
|
+
Rupi::Pin.join_watch_thread
|
57
|
+
run_thread.terminate if run_thread
|
58
|
+
|
59
|
+
run_thread = Thread.new { load(file_name) }
|
60
|
+
|
61
|
+
update_at = new_updated_at
|
62
|
+
end
|
63
|
+
|
64
|
+
sleep 1
|
65
|
+
end
|
66
|
+
end
|
data/lib/rupi/pin.rb
CHANGED
@@ -64,6 +64,15 @@ module Rupi
|
|
64
64
|
start_watching
|
65
65
|
end
|
66
66
|
|
67
|
+
def self.unwatch(pin)
|
68
|
+
return unless @watched_pins
|
69
|
+
if pin == :all
|
70
|
+
@watched_pins.clear
|
71
|
+
else
|
72
|
+
@watched_pins.delete(pin)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
67
76
|
def self.start_watching
|
68
77
|
@watching = true
|
69
78
|
|
@@ -88,6 +97,7 @@ module Rupi
|
|
88
97
|
|
89
98
|
def self.stop_watching
|
90
99
|
@watching = false
|
100
|
+
join_watch_thread
|
91
101
|
end
|
92
102
|
|
93
103
|
def self.watching?
|
@@ -95,6 +105,7 @@ module Rupi
|
|
95
105
|
end
|
96
106
|
|
97
107
|
def self.join_watch_thread
|
108
|
+
return unless @watch_thread
|
98
109
|
@watch_thread.join
|
99
110
|
end
|
100
111
|
|
data/lib/rupi/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rupi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: wiringpi
|
@@ -27,15 +27,49 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: daemons
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rake
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
30
62
|
description: A avery simple ruby library for Raspberry Pi GPIO
|
31
63
|
email:
|
32
64
|
- mick@staugaard.com
|
33
65
|
executables:
|
34
66
|
- rupi
|
67
|
+
- rupi_service
|
35
68
|
extensions: []
|
36
69
|
extra_rdoc_files: []
|
37
70
|
files:
|
38
71
|
- bin/rupi
|
72
|
+
- bin/rupi_service
|
39
73
|
- lib/rupi/pin.rb
|
40
74
|
- lib/rupi/version.rb
|
41
75
|
- lib/rupi.rb
|
@@ -52,12 +86,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
52
86
|
- - ! '>='
|
53
87
|
- !ruby/object:Gem::Version
|
54
88
|
version: '0'
|
89
|
+
segments:
|
90
|
+
- 0
|
91
|
+
hash: 3089349428251366121
|
55
92
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
93
|
none: false
|
57
94
|
requirements:
|
58
95
|
- - ! '>='
|
59
96
|
- !ruby/object:Gem::Version
|
60
97
|
version: '0'
|
98
|
+
segments:
|
99
|
+
- 0
|
100
|
+
hash: 3089349428251366121
|
61
101
|
requirements: []
|
62
102
|
rubyforge_project:
|
63
103
|
rubygems_version: 1.8.24
|