mikeplayer 1.0.3 → 1.0.8

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: 129df9ce63171d9efbe8bd1e581fdbfdf33fdadf127936089db72149ebd76a54
4
- data.tar.gz: 25f8be729ae785873137a34e291c63983fcb9a5ff71ccb035e6160bbb3448007
3
+ metadata.gz: 98d73ca7a4c48fc9468996b9aa27ca592d544c8a2637161295625acd6fd849b2
4
+ data.tar.gz: 44288a081ec5d6f8e3090613b220fe63828ff239f69209a77f951edc680c8776
5
5
  SHA512:
6
- metadata.gz: b1ec4ae4f8a765ffeed9fb96d7097f97392a27db66211a4bfc4bb14f7a1636b876ec40ecd84458a8ce8a53050cc160d36769a18088fa99533ce927e8ac5185c8
7
- data.tar.gz: eebd1b3afce640dd29ba8e639122f56b64c7b7e0878a1b50e0f7e72cc78a4b258708e50ef8cde1e5fc1f43916b39b42444339b339ad488cdada53a387692ac6e
6
+ metadata.gz: bc0bea67f1ba47fcfe6f63bf7008981ac69ff4247d21e413444bbc641d02a1d245737cfba1f495f9b049562ac409e55deba85bd1a8b87d51f77f8f64eeb81708
7
+ data.tar.gz: 0ced60fdb31a438d80597f0bb7c4118f8662db0133fd235ea318a4ad591393e2bc85e9b8093a973dc7c5ed522874e74d1a883fb176287eac85ac3f6c44154213
data/bin/MikePlayer.rb CHANGED
@@ -21,6 +21,7 @@ OptionParser.new do |opt|
21
21
  opt.on('-l', '--list', 'List songs in playlist.') { |o| options[:list] = true; }
22
22
  opt.on('-d', '--directory name', 'Directory to find mp3s.') { |o| options[:directory] = o }
23
23
  opt.on('-t', '--time minutes', 'Limit time to number of minutes.') { |o| options[:minutes] = o }
24
+ opt.on('-x', '--debug', 'Turn on debug.') { |o| options[:debug] = true }
24
25
  end.parse!
25
26
 
26
27
  MikePlayer::Player.new(options, ARGV).play
data/lib/mikeplayer.rb CHANGED
@@ -4,28 +4,29 @@ require 'open3'
4
4
  require 'io/console'
5
5
  require 'mp3info'
6
6
  require 'mikeplayer/version'
7
- require 'mikeplayer/settings'
7
+ require 'mikeplayer/display'
8
8
  require 'mikeplayer/playlist'
9
+ require 'mikeplayer/play_thread'
10
+ require 'mikeplayer/settings'
9
11
  require 'mikeplayer/song'
10
12
 
11
13
  module MikePlayer
12
14
  class Player
13
- PAUSE_INDICATOR = " ||".freeze
14
- SLEEP_SETTING = 0.5
15
+ PLAY_SLEEP = 0.5
16
+ PAUSE_SLEEP = 1.0
15
17
  STOPPED = :stopped
16
18
  PLAYING = :playing
17
19
  PAUSED = :paused
20
+ SONG_CHANGE = :song_change
18
21
 
19
22
  def initialize(options, *args)
20
23
  @settings = Settings.new(options)
21
24
  @playlist = Playlist.new(@settings.playlist)
22
25
  @minutes = @settings.minutes
23
26
  @command = ''
24
- @pid = nil
25
- @timer_start = nil
27
+ @timer_start = Time.now if (@minutes > 0)
26
28
  @state = STOPPED
27
-
28
- check_system
29
+ @player = PlayThread.new(volume: @settings.volume)
29
30
 
30
31
  if (true == @settings.list?)
31
32
  @songs.map { |song| File.basename(song) }.sort.each {|song| puts "#{File.basename(song)}"}
@@ -50,71 +51,43 @@ module MikePlayer
50
51
  puts "Mike Player v#{MikePlayer::VERSION}"
51
52
  puts "Playlist #{@playlist.info}\n"
52
53
 
53
- if @playlist.finished?
54
+ if (0 == @playlist.size)
54
55
  puts "No songs in playlist."
55
56
 
56
57
  exit 1
57
58
  end
58
59
 
59
60
  @thread = Thread.new do
60
- display_width = 0
61
+ @display = Display.new
62
+ @song_i = 0
61
63
 
62
- while (false == @playlist.finished?)
63
- song = @playlist.current
64
- @song_start = Time.now
65
- info_prefix = "\r#{@playlist.current_song_info}".freeze
64
+ while (@song_i < @playlist.size)
65
+ @display.song_info = @playlist.song_info(@song_i)
66
66
 
67
- stdin, stdother, thread_info = Open3.popen2e('play', '--no-show-progress', '--volume', @settings.volume, song.filename)
67
+ @player.play(song.filename)
68
68
 
69
69
  @state = PLAYING
70
- @pid = thread_info.pid
71
- indicator = ''
72
- info_changed = false
73
70
 
74
- while (true == pid_alive?)
71
+ while @player.playing?
75
72
  pause_if_over_time_limit
76
73
 
77
- if (true == playing?)
78
- indicator = "#{'>' * (playing_time % 4)}".ljust(4)
79
- info_changed = true
80
- elsif (true == paused?) && (PAUSE_INDICATOR != indicator)
81
- indicator = PAUSE_INDICATOR
82
- info_changed = true
83
- end
84
-
85
- if (true == info_changed)
86
- mindicator = ""
87
-
88
- if (0 < minutes_remaining)
89
- mindicator = "(#{minutes_remaining}↓) "
90
- end
91
-
92
- print("\r" << ' '.ljust(display_width))
93
-
94
- info = "#{info_prefix} #{song.length_str(playing_time)} #{mindicator}#{indicator}"
74
+ @display.elapsed = @player.elapsed if playing?
95
75
 
96
- print(info)
76
+ @display.display!(song.length_str(@player.elapsed), minutes_remaining)
97
77
 
98
- display_width = info.size
99
-
100
- info_changed = false
101
- $stdout.flush
102
- end
103
-
104
- sleep SLEEP_SETTING
78
+ sleep(sleep_time)
105
79
  end
106
80
 
107
- stdin.close
108
- stdother.close
109
-
110
- @pid = nil
111
-
112
- if (true == playing?)
113
- next_song unless @pid.nil?
81
+ if playing? && @player.stopped?
82
+ next_song
83
+ elsif paused?
84
+ while paused?
85
+ sleep(sleep_time)
86
+ end
114
87
  end
115
88
  end
116
89
 
117
- @pid = nil
90
+ @player.stop
118
91
  print("\r\n")
119
92
  exit
120
93
  end
@@ -124,30 +97,8 @@ module MikePlayer
124
97
  print("\r\n")
125
98
  end
126
99
 
127
- def cmd_exist?(cmd)
128
- if (true != system('command'))
129
- raise "Missing 'command' command, which is used to test compatibility."
130
- end
131
-
132
- if (true != system("command -v #{cmd} >/dev/null 2>&1"))
133
- return false
134
- end
135
-
136
- return true
137
- end
138
-
139
100
  private
140
101
 
141
- def check_system
142
- %w(play).each do |cmd|
143
- if (false == cmd_exist?(cmd))
144
- raise "#{cmd} failed, do you have sox installed?"
145
- end
146
- end
147
-
148
- return nil
149
- end
150
-
151
102
  def wait_on_user
152
103
  while ('q' != @command)
153
104
  @command = STDIN.getch
@@ -158,9 +109,8 @@ module MikePlayer
158
109
  next_song
159
110
  elsif ('z' == @command)
160
111
  previous_song
161
- elsif ('q' == @command) && (false == @pid.nil?)
162
- stop_song
163
- @thread.kill
112
+ elsif ('q' == @command)
113
+ press_stop
164
114
  elsif ('t' == @command)
165
115
  @timer_start = Time.now
166
116
  elsif (false == @timer_start.nil?) && ("#{@command.to_i}" == @command)
@@ -182,69 +132,58 @@ module MikePlayer
182
132
  return (PAUSED == @state)
183
133
  end
184
134
 
135
+ def changing?
136
+ return (SONG_CHANGE == @state)
137
+ end
138
+
139
+ def press_stop
140
+ @player.stop
141
+ @state = STOPPED
142
+ end
143
+
185
144
  def press_pause
186
- if (true == playing?)
187
- kill("STOP")
188
- @pause_time = Time.now
145
+ debug('|')
146
+
147
+ if playing?
148
+ debug('>')
189
149
  @state = PAUSED
190
- elsif (true == paused?)
191
- kill("CONT")
192
- @song_start += (Time.now - @pause_time)
193
- @pause_time = nil
150
+ @display.paused
151
+ @player.pause
152
+ elsif paused?
153
+ debug('|')
194
154
  @state = PLAYING
195
155
  else
196
156
  print("Confused state #{@state}.")
197
157
  end
198
158
  end
199
159
 
200
- def stop_song
201
- if (true == paused?)
202
- kill("CONT")
203
- end
204
-
205
- kill("INT")
206
-
207
- sleep 0.2
208
-
209
- if (true == pid_alive?)
210
- kill("KILL")
211
- end
212
-
213
- @state = STOPPED
214
- @pid = nil
215
- end
216
-
217
- def pid_alive?(pid = @pid)
218
- if (false == pid.nil?)
219
- return system("ps -p #{pid} > /dev/null")
220
- end
160
+ def next_song
161
+ debug('n')
221
162
 
222
- return false
223
- end
163
+ @state = SONG_CHANGE
224
164
 
225
- def next_song
226
- stop_song
165
+ @player.stop
227
166
 
228
- @playlist.next
167
+ @song_i += 1
229
168
  end
230
169
 
231
170
  def previous_song
232
- stop_song
171
+ debug('p')
233
172
 
234
- if (playing_time < 10)
235
- @playlist.previous
236
- end
237
- end
173
+ @state = SONG_CHANGE
238
174
 
239
- def kill(signal)
240
- if (false == @pid.nil?)
241
- Process.kill(signal, @pid)
175
+ if (@player.elapsed < 10)
176
+ @song_i -= 1 if @song_i.positive?
177
+ else
178
+ debug('x')
242
179
  end
180
+
181
+ @player.stop
243
182
  end
244
183
 
245
184
  def pause_if_over_time_limit
246
185
  if (false == @timer_start.nil?) && (0 < @minutes) && (true == playing?)
247
- if (0 > minutes_remaining)
186
+ if (minutes_remaining && 0 >= minutes_remaining)
248
187
  press_pause
249
188
  @timer_start = nil
250
189
  @minutes = 0
@@ -252,24 +191,24 @@ module MikePlayer
252
191
  end
253
192
  end
254
193
 
255
- def playing_time
256
- return (Time.now - @song_start).to_i - pause_time
194
+ def minutes_remaining
195
+ return if ((0 == @minutes) || (@timer_start.nil?))
196
+
197
+ (@minutes - ((Time.now - @timer_start).to_i / 60).to_i)
257
198
  end
258
199
 
259
- def pause_time
260
- if (@pause_time.nil?)
261
- return 0
262
- else
263
- return (Time.now - @pause_time).to_i
264
- end
200
+ def sleep_time
201
+ return PLAY_SLEEP if playing?
202
+
203
+ PAUSE_SLEEP
265
204
  end
266
205
 
267
- def minutes_remaining
268
- if ((0 == @minutes) || (@timer_start.nil?))
269
- return -1
270
- else
271
- return (@minutes - ((Time.now - @timer_start).to_i / 60).to_i)
272
- end
206
+ def song
207
+ @playlist.get(@song_i)
208
+ end
209
+
210
+ def debug(str)
211
+ print(str) if @settings.debug?
273
212
  end
274
213
  end
275
214
  end
@@ -0,0 +1,49 @@
1
+ module MikePlayer
2
+ class Display
3
+ PAUSE_INDICATOR = '||'.freeze
4
+ INDICATOR_SIZE = 4
5
+
6
+ def initialize
7
+ @width = 0
8
+ @indicator = ''
9
+ @changed = false
10
+ end
11
+
12
+ def song_info=(v)
13
+ @info_prefix = "\r#{v}".freeze
14
+ end
15
+
16
+ def elapsed=(v)
17
+ @indicator = "#{'>' * (v % INDICATOR_SIZE)}".ljust(INDICATOR_SIZE)
18
+ @changed = true
19
+ end
20
+
21
+ def paused
22
+ if (false == @indicator.include?(PAUSE_INDICATOR))
23
+ @indicator = PAUSE_INDICATOR.ljust(INDICATOR_SIZE)
24
+ @changed = true
25
+ end
26
+ end
27
+
28
+ def display!(elapsed_info, countdown = nil)
29
+ return unless changed?
30
+
31
+ mindicator = "(#{countdown}↓) " if countdown
32
+
33
+ print("\r" << ' '.ljust(@width))
34
+
35
+ info = "#{@info_prefix} #{elapsed_info} #{mindicator}#{@indicator}"
36
+
37
+ print(info)
38
+
39
+ @width = info.size
40
+ @changed = false
41
+
42
+ $stdout.flush
43
+ end
44
+
45
+ def changed?
46
+ true == @changed
47
+ end
48
+ end
49
+ end
@@ -1,13 +1,121 @@
1
1
  module MikePlayer
2
2
  class PlayThread
3
- def self.run(file, volume)
3
+ def initialize(volume: 1.0)
4
+ check_system
5
+
6
+ @pid = nil
7
+ @volume = volume
8
+ @start_t = 0
9
+ @elapsed = 0
10
+ @paused = false
11
+ end
12
+
13
+ def play(file)
14
+ start_position = 0
15
+
16
+ if paused?
17
+ start_position = @elapsed
18
+ else
19
+ @elapsed = 0
20
+ end
21
+
22
+ start_thread(file: file, start_position: start_position)
23
+
24
+ @start_t = Time.now.to_i
25
+ end
26
+
27
+ def stop
28
+ pause
29
+
30
+ @elapsed = 0
31
+ @start_t = 0
32
+ @paused = false
33
+ end
34
+
35
+ def pause
36
+ kill('INT')
37
+
38
+ @elapsed += Time.now.to_i - @start_t
39
+ @start_t = 0
40
+
41
+ sleep 0.2
42
+
43
+ kill('KILL')
44
+
45
+ @paused = true
46
+ end
47
+
48
+ def kill(signal)
49
+ Process.kill(signal, @pid) if alive?
50
+ end
51
+
52
+ def alive?
53
+ MikePlayer::PlayThread.alive?(@pid)
54
+ end
55
+
56
+ def stopped?
57
+ false == alive?
58
+ end
59
+
60
+ def paused?
61
+ @paused && stopped?
62
+ end
63
+
64
+ def playing?
65
+ alive?
66
+ end
67
+
68
+ def elapsed
69
+ return (@elapsed + (Time.now.to_i - @start_t)) if @start_t.positive?
70
+
71
+ @elapsed
72
+ end
73
+
74
+ def self.alive?(pid)
75
+ return system("ps -p #{pid} > /dev/null") unless pid.nil?
76
+
77
+ false
78
+ end
79
+
80
+ def self.cmd_exist?(cmd)
81
+ if (true != system('command'))
82
+ raise "Missing 'command' command, which is used to test compatibility."
83
+ end
84
+
85
+ if (true != system("command -v #{cmd} >/dev/null 2>&1"))
86
+ return false
87
+ end
88
+
89
+ return true
90
+ end
91
+
92
+ private
93
+ def start_thread(file:, start_position: )
4
94
  args = [
5
- :play,
95
+ 'play',
6
96
  '--no-show-progress',
7
- '--volume', volume,
8
- song
97
+ '--volume', @volume.to_s,
98
+ file,
99
+ 'trim', start_position.to_s,
9
100
  ]
10
- Open3.popen2e(*args) do |stdin, out, wait_thr|
101
+
102
+ stdin, stdother, thread_info = Open3.popen2e(*args)
103
+
104
+ @pid = thread_info.pid
105
+
106
+ sleep 0.2
107
+
108
+ raise "Failed to play #{stdother.read}" unless alive?
109
+
110
+ stdin.close
111
+ stdother.close
112
+
113
+ self
114
+ end
115
+
116
+ def check_system
117
+ %w[play].each do |cmd|
118
+ raise "#{cmd} failed, do you have sox installed?" unless MikePlayer::PlayThread.cmd_exist?(cmd)
11
119
  end
12
120
  end
13
121
  end
@@ -5,12 +5,11 @@ module MikePlayer
5
5
  def initialize(filename)
6
6
  @filename = filename
7
7
  @songs = []
8
- @song_i = 0
9
8
  @length = 0
10
9
 
11
10
  load_songs
12
11
 
13
- @loaded_song_count = @songs.size
12
+ @loaded_song_count = self.size
14
13
  end
15
14
 
16
15
  def <<(song)
@@ -44,22 +43,8 @@ module MikePlayer
44
43
  return self
45
44
  end
46
45
 
47
- def current
48
- return @songs[@song_i]
49
- end
50
-
51
- def next
52
- @song_i += 1
53
-
54
- return self.current
55
- end
56
-
57
- def previous
58
- @song_i -= 1
59
-
60
- @song_i = 0 if @song_i < 0
61
-
62
- return self.current
46
+ def get(i)
47
+ return @songs[i]
63
48
  end
64
49
 
65
50
  def shuffle!
@@ -79,17 +64,17 @@ module MikePlayer
79
64
  end
80
65
 
81
66
  def info
82
- return "#{self.name} loaded #{@loaded_song_count} songs with length #{Song.as_duration_str(@length)}, added #{@songs.size - @loaded_song_count}"
67
+ return "#{self.name} loaded #{@loaded_song_count} and added #{self.size - @loaded_song_count} songs with length #{Song.as_duration_str(@length)}"
83
68
  end
84
69
 
85
- def current_song_info
86
- song_i_str = "#{@song_i + 1}".rjust(@songs.size.to_s.size)
70
+ def song_info(i)
71
+ song_i_str = "#{i + 1}".rjust(self.size.to_s.size)
87
72
 
88
- return "Playing (#{song_i_str}/#{@songs.size}): #{current.info}".freeze
73
+ return "Playing (#{song_i_str}/#{self.size}): #{get(i).info}".freeze
89
74
  end
90
75
 
91
- def finished?
92
- return @song_i >= @songs.size
76
+ def size
77
+ return @songs.size
93
78
  end
94
79
 
95
80
  private
@@ -16,6 +16,7 @@ module MikePlayer
16
16
  @music_dir = options[:directory] || File.join(@home, DEFAULT_DIRECTORY)
17
17
  @settings_dir = options[:settings] || File.join(@home, SETTINGS_DIRECTORY)
18
18
  @minutes = options[:minutes].to_i
19
+ @debug = options[:debug]
19
20
  @random = options[:random].to_i
20
21
 
21
22
  if (false == Dir.exist?(@settings_dir))
@@ -35,6 +36,10 @@ module MikePlayer
35
36
  return 0 < @random
36
37
  end
37
38
 
39
+ def debug?
40
+ return (true == @debug)
41
+ end
42
+
38
43
  def overwrite?
39
44
  return true == @overwrite
40
45
  end
@@ -23,7 +23,7 @@ module MikePlayer
23
23
  end
24
24
 
25
25
  def length
26
- return @mp3info.length
26
+ return @mp3info.length || 0
27
27
  end
28
28
 
29
29
  def length_str(elapsed_time)
@@ -1,3 +1,3 @@
1
1
  module MikePlayer
2
- VERSION = '1.0.3'.freeze
2
+ VERSION = '1.0.8'.freeze
3
3
  end
data/mikeplayer.gemspec CHANGED
@@ -3,15 +3,15 @@ lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'mikeplayer/version'
5
5
 
6
- Gem::Specification.new do |gem|
7
- gem.name = 'mikeplayer'
8
- gem.version = MikePlayer::VERSION
9
- gem.authors = ['Mike Crockett']
10
- gem.email = ['rubygems@mmcrockett.com']
11
- gem.summary = 'Wraps Sox\'s `play` command, allowing playslists, find, random and time limit.'
12
- gem.executables << 'MikePlayer.rb'
13
- gem.description = <<-EOF.gsub(/^\s+/, '')
14
- #{gem.summary}
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'mikeplayer'
8
+ spec.version = MikePlayer::VERSION
9
+ spec.authors = ['Mike Crockett']
10
+ spec.email = ['rubygems@mmcrockett.com']
11
+ spec.summary = 'Wraps Sox\'s `play` command, allowing playslists, find, random and time limit.'
12
+ spec.executables << 'MikePlayer.rb'
13
+ spec.description = <<-EOF.gsub(/^\s+/, '')
14
+ #{spec.summary}
15
15
 
16
16
  Once a song is playing you can:
17
17
  'x' to previous
@@ -20,17 +20,20 @@ Gem::Specification.new do |gem|
20
20
  'q' to quit
21
21
  't' n to set a timer that will pause the music after n minutes
22
22
  EOF
23
- gem.homepage = 'https://github.com/mmcrockett/mikeplayer'
23
+ spec.homepage = 'https://github.com/mmcrockett/mikeplayer'
24
24
 
25
- gem.files = `git ls-files`.split($/)
26
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
27
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
28
- gem.require_paths = ['lib']
29
- gem.licenses = ['MIT']
25
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
26
+ f.match?(%r{^(test|spec|features|helpers|)/}) || f.match?(%r{^(\.[[:alnum:]]+)}) || f.match?(/console/)
27
+ end
30
28
 
31
- gem.add_dependency 'json', '~> 1.8'
32
- gem.add_dependency 'ruby-mp3info', '~> 0.8'
33
- gem.add_dependency 'minitest', '~> 5'
34
- gem.add_development_dependency 'rake', '~> 12'
35
- gem.add_development_dependency 'byebug', '~> 11'
29
+ spec.executables = spec.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
30
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
31
+ spec.require_paths = ['lib']
32
+ spec.licenses = ['MIT']
33
+
34
+ spec.add_dependency 'json', '~> 2.5'
35
+ spec.add_dependency 'ruby-mp3info', '~> 0.8'
36
+ spec.add_dependency 'minitest', '~> 5'
37
+ spec.add_development_dependency 'rake', '~> 12'
38
+ spec.add_development_dependency 'byebug', '~> 11'
36
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mikeplayer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Crockett
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-30 00:00:00.000000000 Z
11
+ date: 2021-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.8'
19
+ version: '2.5'
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: '1.8'
26
+ version: '2.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: ruby-mp3info
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -95,13 +95,13 @@ executables:
95
95
  extensions: []
96
96
  extra_rdoc_files: []
97
97
  files:
98
- - ".gitignore"
99
98
  - Gemfile
100
99
  - LICENSE
101
100
  - README.md
102
101
  - Rakefile
103
102
  - bin/MikePlayer.rb
104
103
  - lib/mikeplayer.rb
104
+ - lib/mikeplayer/display.rb
105
105
  - lib/mikeplayer/executable.rb
106
106
  - lib/mikeplayer/play_thread.rb
107
107
  - lib/mikeplayer/playlist.rb
@@ -109,14 +109,11 @@ files:
109
109
  - lib/mikeplayer/song.rb
110
110
  - lib/mikeplayer/version.rb
111
111
  - mikeplayer.gemspec
112
- - test/mikeplayer/settings_test.rb
113
- - test/mikeplayer_test.rb
114
- - test/test_helper.rb
115
112
  homepage: https://github.com/mmcrockett/mikeplayer
116
113
  licenses:
117
114
  - MIT
118
115
  metadata: {}
119
- post_install_message:
116
+ post_install_message:
120
117
  rdoc_options: []
121
118
  require_paths:
122
119
  - lib
@@ -131,12 +128,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
128
  - !ruby/object:Gem::Version
132
129
  version: '0'
133
130
  requirements: []
134
- rubyforge_project:
135
- rubygems_version: 2.7.6
136
- signing_key:
131
+ rubygems_version: 3.1.2
132
+ signing_key:
137
133
  specification_version: 4
138
134
  summary: Wraps Sox's `play` command, allowing playslists, find, random and time limit.
139
- test_files:
140
- - test/mikeplayer/settings_test.rb
141
- - test/mikeplayer_test.rb
142
- - test/test_helper.rb
135
+ test_files: []
data/.gitignore DELETED
@@ -1,51 +0,0 @@
1
- *.gem
2
- Gemfile.lock
3
- *.rbc
4
- /.config
5
- /coverage/
6
- /InstalledFiles
7
- /pkg/
8
- /spec/reports/
9
- /spec/examples.txt
10
- /test/tmp/
11
- /test/version_tmp/
12
- /tmp/
13
-
14
- # Used by dotenv library to load environment variables.
15
- # .env
16
-
17
- ## Specific to RubyMotion:
18
- .dat*
19
- .repl_history
20
- build/
21
- *.bridgesupport
22
- build-iPhoneOS/
23
- build-iPhoneSimulator/
24
-
25
- ## Specific to RubyMotion (use of CocoaPods):
26
- #
27
- # We recommend against adding the Pods directory to your .gitignore. However
28
- # you should judge for yourself, the pros and cons are mentioned at:
29
- # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
30
- #
31
- # vendor/Pods/
32
-
33
- ## Documentation cache and generated files:
34
- /.yardoc/
35
- /_yardoc/
36
- /doc/
37
- /rdoc/
38
-
39
- ## Environment normalization:
40
- /.bundle/
41
- /vendor/bundle
42
- /lib/bundler/man/
43
-
44
- # for a library or gem, you might want to ignore these files since the code is
45
- # intended to run in multiple environments; otherwise, check them in:
46
- # Gemfile.lock
47
- # .ruby-version
48
- # .ruby-gemset
49
-
50
- # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
51
- .rvmrc
@@ -1,17 +0,0 @@
1
- require 'test_helper'
2
-
3
- class SettingsTest < Minitest::Test
4
- describe 'settings' do
5
- let(:home) { File.join('', 'tmp') }
6
- let(:sdir) { File.join(home, MikePlayer::Settings::SETTINGS_DIRECTORY) }
7
-
8
- before do
9
- Dir.delete(sdir) if Dir.exist?(sdir)
10
- end
11
-
12
- it 'creates a settings directory' do
13
- MikePlayer::Settings.new(home: home)
14
- assert(Dir.exist?(sdir))
15
- end
16
- end
17
- end
@@ -1,9 +0,0 @@
1
- require 'test_helper'
2
-
3
- class MikePlayerTest < Minitest::Test
4
- describe 'mikeplayer' do
5
- it 'has a version' do
6
- assert(MikePlayer::VERSION)
7
- end
8
- end
9
- end
data/test/test_helper.rb DELETED
@@ -1,5 +0,0 @@
1
- $LOAD_PATH.unshift File.expand_path('../lib', __dir__)
2
- require 'mikeplayer'
3
-
4
- require 'minitest/autorun'
5
- require 'byebug'