candelabra 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- candelabra (1.0.2)
4
+ candelabra (1.1.1.beta)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -5,8 +5,8 @@ Gem::Specification.new do |s|
5
5
  s.name = "candelabra"
6
6
  s.version = Candelabra::VERSION
7
7
  s.platform = Gem::Platform::RUBY
8
- s.authors = []
9
- s.email = []
8
+ s.authors = ['cajun']
9
+ s.email = ['zac@kleinpeter.org']
10
10
  s.homepage = "http://rubygems.org/gems/candelabra"
11
11
  s.summary = "Wrapper for pianobar"
12
12
  s.description = "initial wrapper for pianobar"
@@ -20,17 +20,8 @@ module Candelabra
20
20
  Remote.flush
21
21
  when 'userlogin'
22
22
  unless @pRet.to_i == 1
23
- `notify-send Bad Username`
24
23
  `ps a | grep 'candelabra install' | cut -c1-5`.split("\n").each{|id| `kill #{id}` unless Process.pid == id.to_i }
25
24
  end
26
-
27
- else
28
- #`notify-send #{@pRet}`
29
- #`notify-send #{command}`
30
- #`notify-send #{command}`
31
- #instance_variables.each do |i|
32
- # `notify-send #{i}`
33
- #end
34
25
  end
35
26
  end
36
27
 
@@ -89,6 +89,9 @@ module Candelabra
89
89
  end
90
90
 
91
91
  def start_pianobar
92
+ Remote.flush
93
+ Remote.flush_input
94
+
92
95
  if Pianobar.running?
93
96
  print "Restarting Pianobar with Autostation".ljust(CONSOLE_WIDTH + 20, '.')
94
97
  Pianobar.restart
@@ -113,13 +116,13 @@ module Candelabra
113
116
 
114
117
  if Pianobar.running?
115
118
  `echo '0' > #{Installer.input_path}` # forcing auto selection of the first station
116
- sleep( 2 )
119
+ sleep( 5 )
117
120
  puts ''
118
121
  puts "Select Auto station".center( CONSOLE_WIDTH + 20, ' ' )
119
- stations = Remote.stations
120
- stations.each { |s| puts s }
121
122
 
122
123
  begin
124
+ stations = Remote.stations
125
+ stations.each { |s| puts s }
123
126
  result = ask 'Select Station and press ENTER:'
124
127
  raise "You must enter the number of a valid station" unless result == result.to_i.to_s
125
128
  raise "That is not a valid station it must be a number between 0 and #{stations.size - 1}" unless (0..stations.size - 1).include? result.to_i
@@ -56,7 +56,7 @@ module Candelabra
56
56
 
57
57
  # Notify the user using growl
58
58
  def notify
59
- %x[growlnotify --image #{art_work} -t "Pianobar - #{stationName}" -m "Now Playing: #{artist} - #{title}"]
59
+ %x[growlnotify --image #{art_work} -t "Pianobar - #{stationName}" -m "Now Playing: #{artist} - #{title}"] if notify?
60
60
  end
61
61
 
62
62
  end
@@ -92,13 +92,14 @@ module Candelabra
92
92
 
93
93
  def initialize
94
94
  @commands = {
95
- :start => Start.new,
95
+ :start => Start.new,
96
96
  :stop_all => StopAll.new,
97
- :pid => PID.new
97
+ :pid => PID.new
98
98
  }
99
99
  end
100
100
 
101
101
  def command(command)
102
+ Remote.flush_all
102
103
  @commands[command].go if @commands[command]
103
104
  end
104
105
  end
@@ -107,7 +108,8 @@ module Candelabra
107
108
  class Start
108
109
  def go
109
110
  pid = fork do
110
- $stdin.reopen File.open( Installer.input_path, 'r+' )
111
+ [$stdin, $stdout].each {|st| st.close}
112
+ $stdin.reopen File.open( Installer.input_path , 'r+' )
111
113
  $stdout.reopen File.open( Installer.output_path, 'w+' )
112
114
  exec 'pianobar'
113
115
  end
@@ -42,6 +42,7 @@ module Candelabra
42
42
  #
43
43
  # Returns command you passed in
44
44
  def execute_command cmd
45
+ return nil unless Candelabra::Pianobar.running?
45
46
  if commands.include? cmd
46
47
  %x[ echo #{commands[cmd]} > #{Candelabra::Installer.ctl_path} ]
47
48
  else
@@ -123,7 +124,7 @@ module Candelabra
123
124
  # Returns an array of stations
124
125
  def stations
125
126
  list = []
126
- execute_command( :change_station )
127
+ execute_command( :stations )
127
128
  output do |io|
128
129
  io.lines.each do |line|
129
130
  /(\[\?\])/ =~ line
@@ -134,16 +135,19 @@ module Candelabra
134
135
  list
135
136
  end
136
137
 
138
+ def flush_all
139
+ flush
140
+ flush_input
141
+ end
142
+
137
143
  def flush
138
- output do |io|
139
- loop do
140
- begin
141
- io.read_nonblock(1);
142
- rescue
143
- break
144
- end
145
- end
146
- end
144
+ output { |io| loop { io.read_nonblock(1) } }
145
+ rescue # TODO put the correct exception
146
+ end
147
+
148
+ def flush_input
149
+ input { |io| loop { io.read_nonblock(1) } }
150
+ rescue # TODO put the correct exception
147
151
  end
148
152
 
149
153
  # The out put file for the commands
@@ -152,6 +156,16 @@ module Candelabra
152
156
  # Yields and IO reader for pianobar's output
153
157
  def output
154
158
  File.open( Candelabra::Installer.output_path, 'r+' ) do |io|
159
+ yield(io)
160
+ end
161
+ end
162
+
163
+ # The out put file for the commands
164
+ # This contains all the output from pianobar
165
+ #
166
+ # Yields and IO reader for pianobar's output
167
+ def input
168
+ File.open( Candelabra::Installer.input_path, 'r+' ) do |io|
155
169
  yield( io )
156
170
  end
157
171
  end
@@ -69,9 +69,11 @@ module Candelabra
69
69
  when 'start'
70
70
  Candelabra::Pianobar.start
71
71
  when 'stop'
72
- Candelabra::Pianobar.stop
72
+ Candelabra::Pianobar.stop_all
73
73
  when 'restart'
74
74
  Candelabra::Pianobar.restart
75
+ when 'flush' # Force flushing of the fifo files
76
+ Candelabra::Remote.flush_all
75
77
  when 'install'
76
78
  Candelabra::Installer.run
77
79
  when *cmds.keys
@@ -1,16 +1,18 @@
1
1
  usage: candelabra [command] [data]
2
2
 
3
3
  Base Commands:
4
- install
5
- start
6
- stop
7
- restart
4
+ install # installs pianobar and sets up the configuration files
5
+ start
6
+ stop
7
+ restart
8
+ flush # flushs out all of the fifo files
8
9
 
9
10
  Controlling Pianobar
10
11
  n(ext)
11
12
  p(ause)
12
13
  co(continue)
13
- ch(change_station) # of station
14
+ ch(change_station) [ # of station ]
15
+ s(tations)
14
16
  t(ired)
15
17
  u(pcomming)
16
18
  q(ick_mix)
@@ -1,3 +1,3 @@
1
1
  module Candelabra
2
- VERSION = "1.1.1"
2
+ VERSION = "1.1.2"
3
3
  end
metadata CHANGED
@@ -1,19 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: candelabra
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  prerelease: !!null
6
6
  platform: ruby
7
- authors: []
7
+ authors:
8
+ - cajun
8
9
  autorequire: !!null
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2011-02-17 00:00:00.000000000 -06:00
12
+ date: 2011-02-20 00:00:00.000000000 -06:00
12
13
  default_executable: !!null
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: bundler
16
- requirement: &2153408540 !ruby/object:Gem::Requirement
17
+ requirement: &2153649260 !ruby/object:Gem::Requirement
17
18
  none: false
18
19
  requirements:
19
20
  - - ~>
@@ -21,10 +22,10 @@ dependencies:
21
22
  version: 1.0.0
22
23
  type: :development
23
24
  prerelease: false
24
- version_requirements: *2153408540
25
+ version_requirements: *2153649260
25
26
  - !ruby/object:Gem::Dependency
26
27
  name: minitest
27
- requirement: &2153408080 !ruby/object:Gem::Requirement
28
+ requirement: &2153648800 !ruby/object:Gem::Requirement
28
29
  none: false
29
30
  requirements:
30
31
  - - ! '>='
@@ -32,9 +33,10 @@ dependencies:
32
33
  version: 2.0.2
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *2153408080
36
+ version_requirements: *2153648800
36
37
  description: initial wrapper for pianobar
37
- email: []
38
+ email:
39
+ - zac@kleinpeter.org
38
40
  executables:
39
41
  - candelabra
40
42
  extensions: []