mikeplayer 1.0.3 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
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'