jimmy_jukebox 0.3.6 → 0.3.7
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/jplay_jukebox +4 -9
- data/bin/play_jukebox +9 -1
- data/lib/jimmy_jukebox/load_jukebox_code.rb +1 -1
- data/lib/jimmy_jukebox/song.rb +12 -17
- data/lib/jimmy_jukebox/song_loader.rb +4 -4
- data/lib/jimmy_jukebox/user_config.rb +12 -8
- data/lib/jimmy_jukebox/user_interface.rb +2 -0
- data/lib/jimmy_jukebox/version.rb +1 -1
- metadata +131 -134
data/bin/jplay_jukebox
CHANGED
@@ -1,15 +1,10 @@
|
|
1
1
|
#!/usr/bin/env jruby
|
2
2
|
|
3
|
-
require 'readline'
|
4
|
-
|
5
3
|
begin
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
require 'spoon'
|
11
|
-
end
|
12
|
-
rescue LoadError
|
4
|
+
require 'readline'
|
5
|
+
require 'spoon'
|
6
|
+
rescue LoadError => e
|
7
|
+
raise unless e.message =~ /readline|spoon/
|
13
8
|
puts "*** You must install the 'spoon' gem to use JimmyJukebox on JRuby ***"
|
14
9
|
exit
|
15
10
|
end
|
data/bin/play_jukebox
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'readline'
|
5
|
+
require 'posix/spawn'
|
6
|
+
rescue LoadError => e
|
7
|
+
raise unless e.message =~ /readline|posix|spawn/
|
8
|
+
puts "*** You must install the 'rb-readline' and 'posix_spawn' gems to use JimmyJukebox in Ruby ***"
|
9
|
+
exit
|
10
|
+
end
|
3
11
|
|
4
12
|
lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
|
5
13
|
$LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
lib = File.expand_path(File.dirname(__FILE__) + '/..')
|
2
2
|
$LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
|
3
3
|
require 'jimmy_jukebox/song_loader'
|
4
|
-
include
|
4
|
+
include SongLoader
|
5
5
|
|
6
6
|
require 'jimmy_jukebox/artists'
|
7
7
|
include Artists
|
data/lib/jimmy_jukebox/song.rb
CHANGED
@@ -35,14 +35,6 @@ module JimmyJukebox
|
|
35
35
|
`kill -s CONT #{@playing_pid}` if @playing_pid
|
36
36
|
end
|
37
37
|
|
38
|
-
def delete
|
39
|
-
# without temp var, next song could start playing
|
40
|
-
# in another thread and wrong file could be deleted
|
41
|
-
file_to_delete = @music_file
|
42
|
-
terminate
|
43
|
-
File.delete(file_to_delete)
|
44
|
-
end
|
45
|
-
|
46
38
|
def terminate
|
47
39
|
@paused = false
|
48
40
|
#`killall #{@player}`
|
@@ -73,8 +65,9 @@ module JimmyJukebox
|
|
73
65
|
def play_with_player
|
74
66
|
puts "Press Ctrl-C to stop the music and exit this program"
|
75
67
|
puts "Now playing '#{@music_file}'"
|
76
|
-
|
77
|
-
|
68
|
+
command = @player
|
69
|
+
arg = File.expand_path(@music_file)
|
70
|
+
system_yield_pid(command,arg) do |pid|
|
78
71
|
@playing_pid = pid
|
79
72
|
end
|
80
73
|
end
|
@@ -82,16 +75,19 @@ module JimmyJukebox
|
|
82
75
|
end
|
83
76
|
|
84
77
|
# make system call and get pid so you can terminate process
|
85
|
-
def system_yield_pid(
|
78
|
+
def system_yield_pid(command,arg)
|
86
79
|
# would like to use Process.respond_to?(:fork) but JRuby mistakenly returns true
|
87
80
|
if (defined?(JRUBY_VERSION) || RUBY_PLATFORM == 'java')
|
88
|
-
pid = Spoon.spawnp(
|
81
|
+
pid = Spoon.spawnp(command,arg)
|
82
|
+
Process.waitpid(pid) # Waits for a child process to exit, returns its process id, and sets $? to a Process::Status object
|
89
83
|
else
|
90
84
|
begin
|
91
|
-
pid =
|
92
|
-
|
93
|
-
|
94
|
-
|
85
|
+
pid = POSIX::Spawn::spawn(command + ' ' + arg)
|
86
|
+
stat = Process::waitpid(pid)
|
87
|
+
#pid = fork do # creates and runs block in subprocess (which will terminate with status 0), capture subprocess pid
|
88
|
+
# exec(command) # replaces current process with system call
|
89
|
+
# exit! 127 # exit process and return exit status 127; should never be reached
|
90
|
+
#end
|
95
91
|
rescue NotImplementedError
|
96
92
|
raise "*** fork()...exec() not supported ***"
|
97
93
|
end
|
@@ -104,7 +100,6 @@ module JimmyJukebox
|
|
104
100
|
# puts "No process id (pid)!"
|
105
101
|
# raise "@current_song: #{Jukebox.current_song.inspect}"
|
106
102
|
#end
|
107
|
-
Process.waitpid(pid) # Waits for a child process to exit, returns its process id, and sets $? to a Process::Status object
|
108
103
|
$? # return Process::Status object with instance methods .stopped?, .exited?, .exitstatus; see: http://www.ruby-doc.org/core/classes/Process/Status.html
|
109
104
|
end
|
110
105
|
|
@@ -18,23 +18,23 @@ module JimmyJukebox
|
|
18
18
|
|
19
19
|
module SongLoader
|
20
20
|
|
21
|
-
@user_config = UserConfig.new
|
22
21
|
SUPPORTED_MUSIC_TYPES = /\.mp3$|\.ogg$/i
|
23
22
|
|
24
23
|
@last_top_dir = nil # enables returning previous result if @last_top_dir == top_dir
|
24
|
+
|
25
25
|
@user_config = UserConfig.new
|
26
26
|
|
27
|
-
def self.define_artist(name)
|
27
|
+
def self.define_artist(name,user_config)
|
28
28
|
metaclass.instance_eval do
|
29
29
|
define_method(name) do
|
30
|
-
save_dir =
|
30
|
+
save_dir = user_config.default_music_dir + value_to_subdir_name(name)
|
31
31
|
songs = YAML::load_file(File.dirname(__FILE__) + "/songs/#{value_to_yaml_file(name)}")
|
32
32
|
download_songs(songs, save_dir)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
JAZZ_ARTISTS.values.each { |v| define_artist v.to_sym }
|
37
|
+
JAZZ_ARTISTS.values.each { |v| define_artist v.to_sym, @user_config }
|
38
38
|
|
39
39
|
def self.sample(num_songs)
|
40
40
|
# create array of all possible songs
|
@@ -2,6 +2,8 @@ module JimmyJukebox
|
|
2
2
|
|
3
3
|
class UserConfig
|
4
4
|
|
5
|
+
require 'fileutils'
|
6
|
+
|
5
7
|
require 'jimmy_jukebox/artists'
|
6
8
|
include Artists
|
7
9
|
|
@@ -17,15 +19,10 @@ module JimmyJukebox
|
|
17
19
|
end
|
18
20
|
|
19
21
|
def initialize
|
20
|
-
#configure_preferences
|
21
22
|
set_music_players
|
22
23
|
generate_directories_list
|
23
24
|
generate_song_list
|
24
|
-
|
25
|
-
|
26
|
-
#def configure_preferences
|
27
|
-
# File.exists?(File.join("~",".jimmy_jukebox","configuration"))
|
28
|
-
#end
|
25
|
+
end
|
29
26
|
|
30
27
|
def default_music_dir
|
31
28
|
File.expand_path(File.join("~","Music"))
|
@@ -150,9 +147,16 @@ module JimmyJukebox
|
|
150
147
|
else
|
151
148
|
@music_directories << default_music_dir
|
152
149
|
end
|
150
|
+
create_nonexistent_music_directories
|
153
151
|
add_all_subdirectories
|
154
152
|
end
|
155
153
|
|
154
|
+
def create_nonexistent_music_directories
|
155
|
+
@music_directories.each do |md|
|
156
|
+
FileUtils.mkdir_p(md) unless Dir.exists?(md)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
156
160
|
def is_a_txt_file?(whatever)
|
157
161
|
return false unless whatever
|
158
162
|
whatever.match(/.*\.txt/) ? true : false
|
@@ -192,11 +196,11 @@ module JimmyJukebox
|
|
192
196
|
files.map! { |f| File.expand_path(music_dir) + '/' + f }
|
193
197
|
@songs = @songs + files
|
194
198
|
end
|
195
|
-
|
199
|
+
puts "WARNING: JimmyJukebox could not find any songs" unless @songs.length > 0
|
196
200
|
#songs = ["~/Music/Artie_Shaw/Georgia On My Mind 1941.mp3",
|
197
201
|
# "~/Music/Jelly_Roll_Morton/High Society 1939.mp3"]
|
198
202
|
end
|
199
203
|
|
200
204
|
end
|
201
205
|
|
202
|
-
|
206
|
+
end
|
metadata
CHANGED
@@ -1,198 +1,195 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: jimmy_jukebox
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.7
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 6
|
10
|
-
version: 0.3.6
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- James Lavin
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-10-08 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: rspec
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
32
22
|
type: :development
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: rspec-core
|
36
23
|
prerelease: false
|
37
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
25
|
none: false
|
39
|
-
requirements:
|
40
|
-
- -
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec-core
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
46
38
|
type: :development
|
47
|
-
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: rspec-mocks
|
50
39
|
prerelease: false
|
51
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
41
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec-mocks
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
60
54
|
type: :development
|
61
|
-
version_requirements: *id003
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: rspec-expectations
|
64
55
|
prerelease: false
|
65
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rspec-expectations
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
66
65
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
|
71
|
-
segments:
|
72
|
-
- 0
|
73
|
-
version: "0"
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
74
70
|
type: :development
|
75
|
-
version_requirements: *id004
|
76
|
-
- !ruby/object:Gem::Dependency
|
77
|
-
name: fakefs
|
78
71
|
prerelease: false
|
79
|
-
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
73
|
none: false
|
81
|
-
requirements:
|
82
|
-
- -
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: fakefs
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
88
86
|
type: :development
|
89
|
-
version_requirements: *id005
|
90
|
-
- !ruby/object:Gem::Dependency
|
91
|
-
name: fakeweb
|
92
87
|
prerelease: false
|
93
|
-
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
89
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: fakeweb
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
102
|
type: :development
|
103
|
-
|
104
|
-
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
description: jimmy_jukebox plays random MP3 & OGG songs under a directory (or set
|
111
|
+
of directories) and can download music
|
105
112
|
email: james@jameslavin.com
|
106
|
-
executables:
|
113
|
+
executables:
|
107
114
|
- play_jukebox
|
108
115
|
- load_jukebox
|
109
116
|
- jplay_jukebox
|
110
117
|
- jload_jukebox
|
111
118
|
extensions: []
|
112
|
-
|
113
119
|
extra_rdoc_files: []
|
114
|
-
|
115
|
-
files:
|
120
|
+
files:
|
116
121
|
- roadmap.txt
|
117
122
|
- LICENSE.txt
|
118
|
-
- lib/jimmy_jukebox
|
119
|
-
- lib/jimmy_jukebox/jukebox.rb
|
120
|
-
- lib/jimmy_jukebox/song_loader.rb
|
121
|
-
- lib/jimmy_jukebox/user_config.rb
|
123
|
+
- lib/jimmy_jukebox.rb
|
122
124
|
- lib/jimmy_jukebox/version.rb
|
123
|
-
- lib/jimmy_jukebox/song.rb
|
124
125
|
- lib/jimmy_jukebox/artists.rb
|
126
|
+
- lib/jimmy_jukebox/song.rb
|
127
|
+
- lib/jimmy_jukebox/jukebox.rb
|
128
|
+
- lib/jimmy_jukebox/user_config.rb
|
125
129
|
- lib/jimmy_jukebox/user_interface.rb
|
126
|
-
- lib/jimmy_jukebox.rb
|
127
|
-
- lib/jimmy_jukebox/
|
128
|
-
- lib/jimmy_jukebox/songs/MilesDavis.yml
|
129
|
-
- lib/jimmy_jukebox/songs/BixBeiderbecke.yml
|
130
|
-
- lib/jimmy_jukebox/songs/LionelHampton.yml
|
131
|
-
- lib/jimmy_jukebox/songs/CountBasie.yml
|
132
|
-
- lib/jimmy_jukebox/songs/DizzyGillespie.yml
|
133
|
-
- lib/jimmy_jukebox/songs/DjangoReinhardt.yml
|
134
|
-
- lib/jimmy_jukebox/songs/LouisArmstrong.yml
|
135
|
-
- lib/jimmy_jukebox/songs/JellyRollMorton.yml
|
136
|
-
- lib/jimmy_jukebox/songs/CharlieChristian.yml
|
130
|
+
- lib/jimmy_jukebox/song_loader.rb
|
131
|
+
- lib/jimmy_jukebox/load_jukebox_code.rb
|
137
132
|
- lib/jimmy_jukebox/songs/BillieHoliday.yml
|
138
|
-
- lib/jimmy_jukebox/songs/ArtTatum.yml
|
139
133
|
- lib/jimmy_jukebox/songs/CharlieParker.yml
|
134
|
+
- lib/jimmy_jukebox/songs/CharlieChristian.yml
|
135
|
+
- lib/jimmy_jukebox/songs/BennieMoten.yml
|
136
|
+
- lib/jimmy_jukebox/songs/FletcherHenderson.yml
|
137
|
+
- lib/jimmy_jukebox/songs/ColemanHawkins.yml
|
140
138
|
- lib/jimmy_jukebox/songs/KingOliver.yml
|
141
139
|
- lib/jimmy_jukebox/songs/OriginalDixielandJazzBand.yml
|
142
|
-
- lib/jimmy_jukebox/songs/
|
143
|
-
- lib/jimmy_jukebox/songs/
|
144
|
-
- lib/jimmy_jukebox/songs/ArtieShaw.yml
|
145
|
-
- lib/jimmy_jukebox/songs/ColemanHawkins.yml
|
146
|
-
- lib/jimmy_jukebox/songs/JamesPJohnson.yml
|
140
|
+
- lib/jimmy_jukebox/songs/LouisArmstrong.yml
|
141
|
+
- lib/jimmy_jukebox/songs/DjangoReinhardt.yml
|
147
142
|
- lib/jimmy_jukebox/songs/RedNorvo.yml
|
143
|
+
- lib/jimmy_jukebox/songs/LionelHampton.yml
|
144
|
+
- lib/jimmy_jukebox/songs/ArtTatum.yml
|
145
|
+
- lib/jimmy_jukebox/songs/BixBeiderbecke.yml
|
146
|
+
- lib/jimmy_jukebox/songs/ArtieShaw.yml
|
147
|
+
- lib/jimmy_jukebox/songs/MilesDavis.yml
|
148
|
+
- lib/jimmy_jukebox/songs/DizzyGillespie.yml
|
148
149
|
- lib/jimmy_jukebox/songs/DukeEllington.yml
|
149
|
-
- lib/jimmy_jukebox/songs/
|
150
|
+
- lib/jimmy_jukebox/songs/BennyGoodman.yml
|
151
|
+
- lib/jimmy_jukebox/songs/CountBasie.yml
|
150
152
|
- lib/jimmy_jukebox/songs/SidneyBechet.yml
|
151
|
-
-
|
152
|
-
-
|
153
|
+
- lib/jimmy_jukebox/songs/JamesPJohnson.yml
|
154
|
+
- lib/jimmy_jukebox/songs/JellyRollMorton.yml
|
155
|
+
- lib/jimmy_jukebox/songs/EarlHines.yml
|
153
156
|
- spec/jimmy_jukebox_spec.rb
|
154
157
|
- spec/song_loader_spec.rb
|
158
|
+
- spec/user_config_spec.rb
|
155
159
|
- spec/song_spec.rb
|
160
|
+
- spec/spec_helper.rb
|
156
161
|
- bin/play_jukebox
|
157
162
|
- bin/load_jukebox
|
158
163
|
- bin/jplay_jukebox
|
159
164
|
- bin/jload_jukebox
|
160
165
|
homepage: https://github.com/JamesLavin/jimmy_jukebox
|
161
166
|
licenses: []
|
162
|
-
|
163
|
-
|
167
|
+
post_install_message: I really hope you enjoy the great jazz downloadable using this
|
168
|
+
gem!
|
164
169
|
rdoc_options: []
|
165
|
-
|
166
|
-
require_paths:
|
170
|
+
require_paths:
|
167
171
|
- lib
|
168
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
172
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
169
173
|
none: false
|
170
|
-
requirements:
|
171
|
-
- -
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
|
174
|
-
|
175
|
-
- 0
|
176
|
-
version: "0"
|
177
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - ! '>='
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
178
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
179
|
none: false
|
179
|
-
requirements:
|
180
|
-
- -
|
181
|
-
- !ruby/object:Gem::Version
|
182
|
-
|
183
|
-
|
184
|
-
- 0
|
185
|
-
version: "0"
|
186
|
-
requirements:
|
187
|
-
- spoon gem (JRuby only)
|
180
|
+
requirements:
|
181
|
+
- - ! '>='
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
version: '0'
|
184
|
+
requirements: []
|
188
185
|
rubyforge_project: jimmy_jukebox
|
189
|
-
rubygems_version: 1.8.
|
186
|
+
rubygems_version: 1.8.23
|
190
187
|
signing_key:
|
191
188
|
specification_version: 3
|
192
189
|
summary: plays your MP3 & OGG files and lets you easily download music
|
193
|
-
test_files:
|
194
|
-
- spec/spec_helper.rb
|
195
|
-
- spec/user_config_spec.rb
|
190
|
+
test_files:
|
196
191
|
- spec/jimmy_jukebox_spec.rb
|
197
192
|
- spec/song_loader_spec.rb
|
193
|
+
- spec/user_config_spec.rb
|
198
194
|
- spec/song_spec.rb
|
195
|
+
- spec/spec_helper.rb
|