jimmy_jukebox 0.2.6
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/LICENSE.txt +340 -0
- data/bin/jload_jukebox +29 -0
- data/bin/jplay_jukebox +49 -0
- data/bin/load_jukebox +29 -0
- data/bin/play_jukebox +49 -0
- data/lib/jimmy_jukebox/artists.rb +45 -0
- data/lib/jimmy_jukebox/song_loader.rb +119 -0
- data/lib/jimmy_jukebox/songs/ArtTatum.yml +169 -0
- data/lib/jimmy_jukebox/songs/ArtieShaw.yml +581 -0
- data/lib/jimmy_jukebox/songs/BennieMoten.yml +108 -0
- data/lib/jimmy_jukebox/songs/BennyGoodman.yml +402 -0
- data/lib/jimmy_jukebox/songs/BillieHoliday.yml +64 -0
- data/lib/jimmy_jukebox/songs/BixBeiderbecke.yml +96 -0
- data/lib/jimmy_jukebox/songs/CharlieChristian.yml +9 -0
- data/lib/jimmy_jukebox/songs/CharlieParker.yml +33 -0
- data/lib/jimmy_jukebox/songs/ColemanHawkins.yml +17 -0
- data/lib/jimmy_jukebox/songs/CountBasie.yml +45 -0
- data/lib/jimmy_jukebox/songs/DizzyGillespie.yml +4 -0
- data/lib/jimmy_jukebox/songs/DjangoReinhardt.yml +76 -0
- data/lib/jimmy_jukebox/songs/DukeEllington.yml +159 -0
- data/lib/jimmy_jukebox/songs/EarlHines.yml +99 -0
- data/lib/jimmy_jukebox/songs/FletcherHenderson.yml +159 -0
- data/lib/jimmy_jukebox/songs/JamesPJohnson.yml +9 -0
- data/lib/jimmy_jukebox/songs/JellyRollMorton.yml +90 -0
- data/lib/jimmy_jukebox/songs/KingOliver.yml +61 -0
- data/lib/jimmy_jukebox/songs/LionelHampton.yml +149 -0
- data/lib/jimmy_jukebox/songs/LouisArmstrong.yml +151 -0
- data/lib/jimmy_jukebox/songs/MilesDavis.yml +9 -0
- data/lib/jimmy_jukebox/songs/OriginalDixielandJazzBand.yml +46 -0
- data/lib/jimmy_jukebox/songs/RedNorvo.yml +40 -0
- data/lib/jimmy_jukebox/songs/SidneyBechet.yml +26 -0
- data/lib/jimmy_jukebox/user_config.rb +202 -0
- data/lib/jimmy_jukebox/version.rb +3 -0
- data/lib/jimmy_jukebox.rb +120 -0
- data/roadmap.txt +20 -0
- data/spec/jimmy_jukebox_spec.rb +161 -0
- data/spec/song_loader_spec.rb +190 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/user_config_spec.rb +148 -0
- metadata +192 -0
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,148 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'fakefs/safe'
|
3
|
+
require File.dirname(__FILE__) + '/../lib/jimmy_jukebox/user_config'
|
4
|
+
include JimmyJukebox
|
5
|
+
|
6
|
+
describe UserConfig do
|
7
|
+
|
8
|
+
before(:all) do
|
9
|
+
#ARGV.delete_if { |val| true }
|
10
|
+
ARGV.clear
|
11
|
+
#ARGV.pop
|
12
|
+
end
|
13
|
+
|
14
|
+
#describe "#configure_preferences" do
|
15
|
+
# context "when configuration file does not exist" do
|
16
|
+
# config_path = File.expand_path(File.join("~",".jimmy_jukebox","configuration"))
|
17
|
+
# FakeFS do
|
18
|
+
# File.exist?(config_path).should be_false
|
19
|
+
# end
|
20
|
+
# end
|
21
|
+
#end
|
22
|
+
|
23
|
+
#describe "#set_default_mp3_dir" do
|
24
|
+
#
|
25
|
+
#
|
26
|
+
#end
|
27
|
+
|
28
|
+
describe "#top_music_dir" do
|
29
|
+
|
30
|
+
it "should parse '~/Music'" do
|
31
|
+
UserConfig.top_music_dir("~/Music").should == "/home/james/Music"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should parse '/home/james/Music'" do
|
35
|
+
UserConfig.top_music_dir("/home/james/Music").should == "/home/james/Music"
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should parse '~/Music/Rock/The_Eagles/hotel_california.mp3'" do
|
39
|
+
UserConfig.top_music_dir("~/Music/Rock/The_Eagles/hotel_california.mp3").should == "/home/james/Music"
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should parse '~/Music/Rock/The Eagles/Hotel California.mp3'" do
|
43
|
+
UserConfig.top_music_dir("~/Music/Rock/The Eagles/Hotel California.mp3").should == "/home/james/Music"
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should parse '~/My Music'" do
|
47
|
+
UserConfig.top_music_dir("~/My Music").should == "/home/james/My Music"
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
context "with no command line parameter" do
|
53
|
+
|
54
|
+
before(:each) do
|
55
|
+
ARGV.delete_if { |val| true }
|
56
|
+
end
|
57
|
+
|
58
|
+
it "does not complain when ogg123 & mpg123 both installed" do
|
59
|
+
uc = UserConfig.new
|
60
|
+
uc.should_receive(:`).with("which ogg123").and_return("/usr/bin/ogg123")
|
61
|
+
uc.should_receive(:`).with("which mpg123").and_return("/usr/bin/mpg123")
|
62
|
+
uc.should_not_receive(:puts)
|
63
|
+
uc.send(:set_music_players)
|
64
|
+
uc.instance_variable_get(:@ogg_player).should == "ogg123"
|
65
|
+
uc.instance_variable_get(:@mp3_player).should == "mpg123"
|
66
|
+
end
|
67
|
+
|
68
|
+
it "does not complain when ogg123 & mpg321 both installed but not mpg123" do
|
69
|
+
uc = UserConfig.new
|
70
|
+
uc.should_receive(:`).with("which ogg123").and_return("/usr/bin/ogg123")
|
71
|
+
uc.should_receive(:`).with("which mpg123").and_return("")
|
72
|
+
uc.should_receive(:`).with("which mpg321").and_return("/usr/bin/mpg321")
|
73
|
+
uc.should_not_receive(:puts)
|
74
|
+
uc.send(:set_music_players)
|
75
|
+
uc.instance_variable_get(:@ogg_player).should == "ogg123"
|
76
|
+
uc.instance_variable_get(:@mp3_player).should == "mpg321"
|
77
|
+
end
|
78
|
+
|
79
|
+
it "complains when ogg123 installed but mpg123, mpg321, music123, afplay & play not installed" do
|
80
|
+
uc = UserConfig.new
|
81
|
+
uc.instance_variable_set(:@ogg_player, nil)
|
82
|
+
uc.instance_variable_set(:@mp3_player, nil)
|
83
|
+
uc.should_receive(:`).at_least(:once).with("which ogg123").and_return("/usr/bin/ogg123")
|
84
|
+
uc.should_receive(:`).at_least(:once).with("which mpg123").and_return("")
|
85
|
+
uc.should_receive(:`).at_least(:once).with("which mpg321").and_return("")
|
86
|
+
uc.should_receive(:`).at_least(:once).with("which music123").and_return("")
|
87
|
+
uc.should_receive(:`).at_least(:once).with("which afplay").and_return("")
|
88
|
+
uc.should_receive(:`).at_least(:once).with("which mplayer").and_return("")
|
89
|
+
uc.should_receive(:`).at_least(:once).with("which play").and_return("")
|
90
|
+
uc.should_receive(:puts).with("*** YOU CANNOT PLAY MP3S -- YOU MIGHT WANT TO INSTALL MPG123 OR MPG321 ***")
|
91
|
+
uc.send(:set_music_players)
|
92
|
+
uc.instance_variable_get(:@ogg_player).should == "ogg123"
|
93
|
+
uc.instance_variable_get(:@mp3_player).should be_false
|
94
|
+
end
|
95
|
+
|
96
|
+
it "complains when mpg123 installed but ogg123, mpg321, music123, afplay & play not installed" do
|
97
|
+
uc = UserConfig.new
|
98
|
+
uc.instance_variable_set(:@ogg_player, nil)
|
99
|
+
uc.instance_variable_set(:@mp3_player, nil)
|
100
|
+
uc.should_receive(:`).at_least(:once).with("which ogg123").and_return("")
|
101
|
+
uc.should_receive(:`).at_least(:once).with("which music123").and_return("")
|
102
|
+
uc.should_receive(:`).at_least(:once).with("which mpg123").and_return("/usr/bin/mpg123")
|
103
|
+
uc.should_receive(:`).at_least(:once).with("which afplay").and_return("")
|
104
|
+
uc.should_receive(:`).at_least(:once).with("which mplayer").and_return("")
|
105
|
+
uc.should_receive(:`).at_least(:once).with("which play").and_return("")
|
106
|
+
uc.should_receive(:puts).with("*** YOU CANNOT PLAY OGG FILES -- YOU MIGHT WANT TO INSTALL OGG123 ***")
|
107
|
+
uc.send(:set_music_players)
|
108
|
+
uc.instance_variable_get(:@ogg_player).should be_false
|
109
|
+
uc.instance_variable_get(:@mp3_player).should == "mpg123"
|
110
|
+
end
|
111
|
+
|
112
|
+
it "complains when mpg321 installed but mpg123, music123, ogg123, afplay & play not installed" do
|
113
|
+
uc = UserConfig.new
|
114
|
+
uc.instance_variable_set(:@ogg_player, nil)
|
115
|
+
uc.instance_variable_set(:@mp3_player, nil)
|
116
|
+
uc.should_receive(:`).at_least(:once).with("which ogg123").and_return("")
|
117
|
+
uc.should_receive(:`).at_least(:once).with("which mpg123").and_return("")
|
118
|
+
uc.should_receive(:`).at_least(:once).with("which music123").and_return("")
|
119
|
+
uc.should_receive(:`).at_least(:once).with("which mpg321").and_return("/usr/bin/mpg321")
|
120
|
+
uc.should_receive(:`).at_least(:once).with("which afplay").and_return("")
|
121
|
+
uc.should_receive(:`).at_least(:once).with("which mplayer").and_return("")
|
122
|
+
uc.should_receive(:`).at_least(:once).with("which play").and_return("")
|
123
|
+
uc.should_receive(:puts).with("*** YOU CANNOT PLAY OGG FILES -- YOU MIGHT WANT TO INSTALL OGG123 ***")
|
124
|
+
uc.send(:set_music_players)
|
125
|
+
uc.instance_variable_get(:@ogg_player).should be_false
|
126
|
+
uc.instance_variable_get(:@mp3_player).should == "mpg321"
|
127
|
+
end
|
128
|
+
|
129
|
+
it "prints message and exits when mpg123, mpg321, ogg123, music123, afplay & play all not installed" do
|
130
|
+
uc = UserConfig.new
|
131
|
+
uc.instance_variable_set(:@ogg_player, nil)
|
132
|
+
uc.instance_variable_set(:@mp3_player, nil)
|
133
|
+
uc.should_receive(:`).at_least(:once).with("which ogg123").and_return("")
|
134
|
+
uc.should_receive(:`).at_least(:once).with("which mpg123").and_return("")
|
135
|
+
uc.should_receive(:`).at_least(:once).with("which music123").and_return("")
|
136
|
+
uc.should_receive(:`).at_least(:once).with("which mpg321").and_return("")
|
137
|
+
uc.should_receive(:`).at_least(:once).with("which afplay").and_return("")
|
138
|
+
uc.should_receive(:`).at_least(:once).with("which mplayer").and_return("")
|
139
|
+
uc.should_receive(:`).at_least(:once).with("which play").and_return("")
|
140
|
+
error_msg = "*** YOU CANNOT PLAY MP3S OR OGG FILES -- YOU MIGHT WANT TO INSTALL ogg123 AND mpg123/mpg321 BEFORE USING JIMMYJUKEBOX ***"
|
141
|
+
uc.should_receive(:puts).with(error_msg)
|
142
|
+
lambda { uc.send(:set_music_players) }.should raise_error SystemExit
|
143
|
+
end
|
144
|
+
|
145
|
+
end
|
146
|
+
|
147
|
+
end
|
148
|
+
|
metadata
ADDED
@@ -0,0 +1,192 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jimmy_jukebox
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 2
|
9
|
+
- 6
|
10
|
+
version: 0.2.6
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- James Lavin
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-08-22 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rspec
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: rspec-core
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
type: :development
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rspec-mocks
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
60
|
+
type: :development
|
61
|
+
version_requirements: *id003
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rspec-expectations
|
64
|
+
prerelease: false
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
71
|
+
segments:
|
72
|
+
- 0
|
73
|
+
version: "0"
|
74
|
+
type: :development
|
75
|
+
version_requirements: *id004
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
name: fakefs
|
78
|
+
prerelease: false
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
version: "0"
|
88
|
+
type: :development
|
89
|
+
version_requirements: *id005
|
90
|
+
- !ruby/object:Gem::Dependency
|
91
|
+
name: fakeweb
|
92
|
+
prerelease: false
|
93
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
hash: 3
|
99
|
+
segments:
|
100
|
+
- 0
|
101
|
+
version: "0"
|
102
|
+
type: :development
|
103
|
+
version_requirements: *id006
|
104
|
+
description: jimmy_jukebox plays random MP3 & OGG songs under a directory (or set of directories) and can download music
|
105
|
+
email: james@jameslavin.com
|
106
|
+
executables:
|
107
|
+
- play_jukebox
|
108
|
+
- load_jukebox
|
109
|
+
- jplay_jukebox
|
110
|
+
- jload_jukebox
|
111
|
+
extensions: []
|
112
|
+
|
113
|
+
extra_rdoc_files: []
|
114
|
+
|
115
|
+
files:
|
116
|
+
- roadmap.txt
|
117
|
+
- LICENSE.txt
|
118
|
+
- lib/jimmy_jukebox/song_loader.rb
|
119
|
+
- lib/jimmy_jukebox/user_config.rb
|
120
|
+
- lib/jimmy_jukebox/version.rb
|
121
|
+
- lib/jimmy_jukebox/artists.rb
|
122
|
+
- lib/jimmy_jukebox.rb
|
123
|
+
- lib/jimmy_jukebox/songs/BennieMoten.yml
|
124
|
+
- lib/jimmy_jukebox/songs/MilesDavis.yml
|
125
|
+
- lib/jimmy_jukebox/songs/BixBeiderbecke.yml
|
126
|
+
- lib/jimmy_jukebox/songs/LionelHampton.yml
|
127
|
+
- lib/jimmy_jukebox/songs/CountBasie.yml
|
128
|
+
- lib/jimmy_jukebox/songs/DizzyGillespie.yml
|
129
|
+
- lib/jimmy_jukebox/songs/DjangoReinhardt.yml
|
130
|
+
- lib/jimmy_jukebox/songs/LouisArmstrong.yml
|
131
|
+
- lib/jimmy_jukebox/songs/JellyRollMorton.yml
|
132
|
+
- lib/jimmy_jukebox/songs/CharlieChristian.yml
|
133
|
+
- lib/jimmy_jukebox/songs/BillieHoliday.yml
|
134
|
+
- lib/jimmy_jukebox/songs/ArtTatum.yml
|
135
|
+
- lib/jimmy_jukebox/songs/CharlieParker.yml
|
136
|
+
- lib/jimmy_jukebox/songs/KingOliver.yml
|
137
|
+
- lib/jimmy_jukebox/songs/OriginalDixielandJazzBand.yml
|
138
|
+
- lib/jimmy_jukebox/songs/EarlHines.yml
|
139
|
+
- lib/jimmy_jukebox/songs/BennyGoodman.yml
|
140
|
+
- lib/jimmy_jukebox/songs/ArtieShaw.yml
|
141
|
+
- lib/jimmy_jukebox/songs/ColemanHawkins.yml
|
142
|
+
- lib/jimmy_jukebox/songs/JamesPJohnson.yml
|
143
|
+
- lib/jimmy_jukebox/songs/RedNorvo.yml
|
144
|
+
- lib/jimmy_jukebox/songs/DukeEllington.yml
|
145
|
+
- lib/jimmy_jukebox/songs/FletcherHenderson.yml
|
146
|
+
- lib/jimmy_jukebox/songs/SidneyBechet.yml
|
147
|
+
- spec/spec_helper.rb
|
148
|
+
- spec/user_config_spec.rb
|
149
|
+
- spec/jimmy_jukebox_spec.rb
|
150
|
+
- spec/song_loader_spec.rb
|
151
|
+
- bin/play_jukebox
|
152
|
+
- bin/load_jukebox
|
153
|
+
- bin/jplay_jukebox
|
154
|
+
- bin/jload_jukebox
|
155
|
+
homepage: https://github.com/JamesLavin/jimmy_jukebox
|
156
|
+
licenses: []
|
157
|
+
|
158
|
+
post_install_message:
|
159
|
+
rdoc_options: []
|
160
|
+
|
161
|
+
require_paths:
|
162
|
+
- lib
|
163
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
164
|
+
none: false
|
165
|
+
requirements:
|
166
|
+
- - ">="
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
hash: 3
|
169
|
+
segments:
|
170
|
+
- 0
|
171
|
+
version: "0"
|
172
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
|
+
none: false
|
174
|
+
requirements:
|
175
|
+
- - ">="
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
hash: 3
|
178
|
+
segments:
|
179
|
+
- 0
|
180
|
+
version: "0"
|
181
|
+
requirements: []
|
182
|
+
|
183
|
+
rubyforge_project: jimmy_jukebox
|
184
|
+
rubygems_version: 1.8.5
|
185
|
+
signing_key:
|
186
|
+
specification_version: 3
|
187
|
+
summary: plays your MP3 & OGG files and lets you easily download music
|
188
|
+
test_files:
|
189
|
+
- spec/spec_helper.rb
|
190
|
+
- spec/user_config_spec.rb
|
191
|
+
- spec/jimmy_jukebox_spec.rb
|
192
|
+
- spec/song_loader_spec.rb
|