movie_organizer 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +75 -0
  5. data/CHANGELOG +3 -0
  6. data/Gemfile +9 -0
  7. data/Guardfile +37 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +81 -0
  10. data/Rakefile +14 -0
  11. data/bin/movie_organizer +9 -0
  12. data/lib/movie_organizer.rb +58 -0
  13. data/lib/movie_organizer/file_copier.rb +69 -0
  14. data/lib/movie_organizer/logger.rb +47 -0
  15. data/lib/movie_organizer/media.rb +95 -0
  16. data/lib/movie_organizer/media_list.rb +31 -0
  17. data/lib/movie_organizer/movie.rb +41 -0
  18. data/lib/movie_organizer/organizer.rb +68 -0
  19. data/lib/movie_organizer/settings.rb +47 -0
  20. data/lib/movie_organizer/string.rb +13 -0
  21. data/lib/movie_organizer/tv_show.rb +96 -0
  22. data/lib/movie_organizer/version.rb +5 -0
  23. data/lib/movie_organizer/video.rb +47 -0
  24. data/movie_organizer.gemspec +43 -0
  25. data/spec/files/The.Walking.Dead.S04E08.HDTV.x264-2HD.mp4 +0 -0
  26. data/spec/files/movies/Dunkirk.2017.BluRay.1080p/Dunkirk.2017.BluRay.1080p.mp4 +0 -0
  27. data/spec/files/movies/The Matrix (1999) [BluRay] [1080p]/The Matrix (1999) [BluRay] [1080p].mp4 b/data/spec/files/movies/The Matrix (1999) [BluRay] [1080p]/The Matrix (1999) [BluRay] → [1080p].mp4 +0 -0
  28. data/spec/files/short_video.mp4 +0 -0
  29. data/spec/fixtures/.blank_settings.yml +0 -0
  30. data/spec/fixtures/.movie_organizer.yml +19 -0
  31. data/spec/fixtures/.no_source_directories.yml +15 -0
  32. data/spec/lib/movie_organizer/file_copier_spec.rb +38 -0
  33. data/spec/lib/movie_organizer/logger_spec.rb +34 -0
  34. data/spec/lib/movie_organizer/media_list_spec.rb +49 -0
  35. data/spec/lib/movie_organizer/media_spec.rb +64 -0
  36. data/spec/lib/movie_organizer/movie_spec.rb +54 -0
  37. data/spec/lib/movie_organizer/organizer_spec.rb +35 -0
  38. data/spec/lib/movie_organizer/tv_show_spec.rb +80 -0
  39. data/spec/lib/movie_organizer_spec.rb +66 -0
  40. data/spec/spec_helper.rb +94 -0
  41. data/spec/support/filename_mappings.yml +10 -0
  42. data/spec/support/shared_contexts/media_shared.rb +50 -0
  43. data/tmdb-logo-primary-green.png +0 -0
  44. metadata +331 -0
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ # rubocop:disable Metrics/BlockLength
6
+ RSpec.describe MovieOrganizer, type: :module do
7
+ context '#root' do
8
+ it 'returns a Pathname instance' do
9
+ expect(MovieOrganizer.root).to be_a(Pathname)
10
+ end
11
+
12
+ it 'returns the root directory' do
13
+ dir = MovieOrganizer.root
14
+ expect(dir.to_s).to match(/movie_organizer$/)
15
+ expect(File.exist?(dir)).to eq(true)
16
+ end
17
+ end
18
+
19
+ context '#current_environment' do
20
+ before do
21
+ @original_env = ENV['APP_ENV']
22
+ end
23
+
24
+ after do
25
+ ENV['APP_ENV'] = @original_env
26
+ end
27
+
28
+ it "defaults to 'development'" do
29
+ ENV.delete('APP_ENV')
30
+ expect(MovieOrganizer.current_environment).to eq('development')
31
+ end
32
+
33
+ it 'returns the APP_ENV variable' do
34
+ ENV['APP_ENV'] = 'asdf'
35
+ expect(MovieOrganizer.current_environment).to eq('asdf')
36
+ end
37
+ end
38
+
39
+ context '#config_file' do
40
+ it 'returns the default config file' do
41
+ expect(MovieOrganizer.config_file.to_s).to match(/.movie_organizer.yml$/)
42
+ end
43
+
44
+ it 'ensures the file exists' do
45
+ expect(File.exist?(MovieOrganizer.config_file)).to eq(true)
46
+ end
47
+ end
48
+
49
+ context '#source_directories' do
50
+ context 'when configured' do
51
+ it 'returns an array of strings' do
52
+ settings = MovieOrganizer::Settings.new
53
+ expect(MovieOrganizer.source_directories(settings)).to be_an(Array)
54
+ end
55
+ end
56
+
57
+ context 'when not yet configured' do
58
+ it 'returns an array of strings' do
59
+ blank = MovieOrganizer.root.join('spec', 'fixtures', '.blank_settings.yml')
60
+ settings = MovieOrganizer::Settings.new(blank)
61
+ expect(MovieOrganizer.source_directories(settings, '~/Videos')).to be_an(Array)
62
+ end
63
+ end
64
+ end
65
+ end
66
+ # rubocop:enable Metrics/BlockLength
@@ -0,0 +1,94 @@
1
+ ENV['APP_ENV'] = 'test'
2
+
3
+ if ENV['COVERAGE']
4
+ require 'simplecov'
5
+
6
+ SimpleCov.start do
7
+ add_filter '/bin'
8
+ add_filter '/stubs'
9
+ add_filter '/tmp'
10
+ add_filter '/vendor'
11
+ add_filter '/spec'
12
+
13
+ add_group 'Modules', 'module'
14
+ add_group 'Libraries', 'lib'
15
+ end
16
+ end
17
+
18
+ require 'pry'
19
+ require 'movie_organizer'
20
+
21
+ # load rspec support
22
+ Dir[File.join(MovieOrganizer.root, 'spec/support/**/*.rb')].sort.each { |f| require f }
23
+
24
+ RSpec.configure do |config|
25
+ # rspec-expectations config goes here. You can use an alternate
26
+ # assertion/expectation library such as wrong or the stdlib/minitest
27
+ # assertions if you prefer.
28
+ config.expect_with :rspec do |expectations|
29
+ # This option will default to `true` in RSpec 4. It makes the `description`
30
+ # and `failure_message` of custom matchers include text for helper methods
31
+ # defined using `chain`, e.g.:
32
+ # be_bigger_than(2).and_smaller_than(4).description
33
+ # # => "be bigger than 2 and smaller than 4"
34
+ # ...rather than:
35
+ # # => "be bigger than 2"
36
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
37
+ end
38
+
39
+ # rspec-mocks config goes here. You can use an alternate test double
40
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
41
+ config.mock_with :rspec do |mocks|
42
+ # Prevents you from mocking or stubbing a method that does not exist on
43
+ # a real object. This is generally recommended, and will default to
44
+ # `true` in RSpec 4.
45
+ mocks.verify_partial_doubles = true
46
+ end
47
+
48
+ # The settings below are suggested to provide a good initial experience
49
+ # with RSpec, but feel free to customize to your heart's content.
50
+ # These two settings work together to allow you to limit a spec run
51
+ # to individual examples or groups you care about by tagging them with
52
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
53
+ # get run.
54
+ config.filter_run :focus
55
+ config.run_all_when_everything_filtered = true
56
+
57
+ # Limits the available syntax to the non-monkey patched syntax that is
58
+ # recommended. For more details, see:
59
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
60
+ # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
61
+ # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
62
+ config.disable_monkey_patching!
63
+
64
+ # This setting enables warnings. It's recommended, but in some cases may
65
+ # be too noisy due to issues in dependencies.
66
+ config.warnings = false
67
+
68
+ # Many RSpec users commonly either run the entire suite or an individual
69
+ # file, and it's useful to allow more verbose output when running an
70
+ # individual spec file.
71
+ if config.files_to_run.one?
72
+ # Use the documentation formatter for detailed output,
73
+ # unless a formatter has already been configured
74
+ # (e.g. via a command-line flag).
75
+ config.default_formatter = 'doc'
76
+ end
77
+
78
+ # Print the 10 slowest examples and example groups at the
79
+ # end of the spec run, to help surface which specs are running
80
+ # particularly slow.
81
+ config.profile_examples = 3
82
+
83
+ # Run specs in random order to surface order dependencies. If you find an
84
+ # order dependency and want to debug it, you can fix the order by providing
85
+ # the seed, which is printed after each run.
86
+ # --seed 1234
87
+ config.order = :random
88
+
89
+ # Seed global randomization in this process using the `--seed` CLI option.
90
+ # Setting this allows you to use `--seed` to deterministically reproduce
91
+ # test failures related to randomization by passing the same `--seed` value
92
+ # as the one that triggered the failure.
93
+ Kernel.srand config.seed
94
+ end
@@ -0,0 +1,10 @@
1
+ ---
2
+ tvshows_no_preserve:
3
+ sample-marvels.agents.of.s.h.i.e.l.d.s02e13.hdtv.x264-killers.mp4:
4
+ arrow.316.hdtv-lol.mp4: Arrow - S03E16.mp4
5
+ The.Walking.Dead.S05E02.720p.HDTV.x264-KILLERS.mp4: The Walking Dead - S05E02.mp4
6
+ Star Trek - 1x01 - The Man Trap.mp4: Star Trek - S01E01.mp4
7
+ the.flash.2014.115.hdtv-lol.mp4: The Flash 2014 - S01E15.mp4
8
+ arrow.316.hdtv-lol.sample.mkv:
9
+ tvshows_preserve:
10
+ Star Trek - 1x01 - The Man Trap.mp4: Star Trek - S01E01 - The Man Trap.mp4
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'faker'
4
+ require 'titleize'
5
+
6
+ # rubocop:disable Metrics/BlockLength
7
+ shared_context 'media_shared' do
8
+ let(:tmpdir) { File.join(MovieOrganizer.root, 'tmp') }
9
+ let(:default_options) { { dry_run: true, verbose: true } }
10
+
11
+ after(:each) do
12
+ FileUtils.rm_rf(Dir.glob("#{tmpdir}/*"))
13
+ end
14
+
15
+ def random_season_episode_string
16
+ season = (1..12).to_a.sample.to_s.rjust(2, '0')
17
+ episode = (1..33).to_a.sample.to_s.rjust(2, '0')
18
+ "S#{season}E#{episode}"
19
+ end
20
+
21
+ # The.Walking.Dead.S05E02.720p.HDTV.x264-KILLERS
22
+ def fake_movie_name(extension, tvshow = true)
23
+ if tvshow
24
+ filename = "#{Faker::App.name}.#{random_season_episode_string}.#{extension}"
25
+ else
26
+ filename = "#{Faker::Hacker.verb.titleize} #{Faker::App.name}.#{extension}"
27
+ end
28
+ File.join(tmpdir, filename)
29
+ end
30
+
31
+ def create_test_file(options = {})
32
+ tvshow = options.fetch(:tvshow, true)
33
+ count = options.fetch(:count, 1)
34
+ filename = options.fetch(:filename, false)
35
+ extension = options.fetch(:extension, 'mp4')
36
+ files = []
37
+
38
+ if filename
39
+ files = [File.join(tmpdir, "#{filename}.#{extension}")]
40
+ File.open(files.last, 'w') { |f| f.write("Fake Media File\n") }
41
+ else
42
+ count.times do
43
+ files << fake_movie_name(extension, tvshow)
44
+ File.open(files.last, 'w') { |f| f.write("Fake Media File\n") }
45
+ end
46
+ end
47
+ files
48
+ end
49
+ end
50
+ # rubocop:enable Metrics/BlockLength
metadata ADDED
@@ -0,0 +1,331 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: movie_organizer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Chris Blackburn
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-03-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faker
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: midwire_common
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.10'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.10'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-nav
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.2'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '10.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '10.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.2'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: colored
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: dotenv
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: mime-types
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: net-scp
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '1.2'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '1.2'
195
+ - !ruby/object:Gem::Dependency
196
+ name: streamio-ffmpeg
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: titleize
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '1.3'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '1.3'
223
+ - !ruby/object:Gem::Dependency
224
+ name: trollop
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ description: Automatically organize movies, tv shows and home videos.
238
+ email:
239
+ - 87a1779b@opayq.com
240
+ executables:
241
+ - movie_organizer
242
+ extensions: []
243
+ extra_rdoc_files: []
244
+ files:
245
+ - ".gitignore"
246
+ - ".rspec"
247
+ - ".rubocop.yml"
248
+ - CHANGELOG
249
+ - Gemfile
250
+ - Guardfile
251
+ - LICENSE.txt
252
+ - README.md
253
+ - Rakefile
254
+ - bin/movie_organizer
255
+ - lib/movie_organizer.rb
256
+ - lib/movie_organizer/file_copier.rb
257
+ - lib/movie_organizer/logger.rb
258
+ - lib/movie_organizer/media.rb
259
+ - lib/movie_organizer/media_list.rb
260
+ - lib/movie_organizer/movie.rb
261
+ - lib/movie_organizer/organizer.rb
262
+ - lib/movie_organizer/settings.rb
263
+ - lib/movie_organizer/string.rb
264
+ - lib/movie_organizer/tv_show.rb
265
+ - lib/movie_organizer/version.rb
266
+ - lib/movie_organizer/video.rb
267
+ - movie_organizer.gemspec
268
+ - spec/files/The.Walking.Dead.S04E08.HDTV.x264-2HD.mp4
269
+ - spec/files/movies/Dunkirk.2017.BluRay.1080p/Dunkirk.2017.BluRay.1080p.mp4
270
+ - spec/files/movies/The Matrix (1999) [BluRay] [1080p]/The Matrix (1999) [BluRay]
271
+ [1080p].mp4
272
+ - spec/files/short_video.mp4
273
+ - spec/fixtures/.blank_settings.yml
274
+ - spec/fixtures/.movie_organizer.yml
275
+ - spec/fixtures/.no_source_directories.yml
276
+ - spec/lib/movie_organizer/file_copier_spec.rb
277
+ - spec/lib/movie_organizer/logger_spec.rb
278
+ - spec/lib/movie_organizer/media_list_spec.rb
279
+ - spec/lib/movie_organizer/media_spec.rb
280
+ - spec/lib/movie_organizer/movie_spec.rb
281
+ - spec/lib/movie_organizer/organizer_spec.rb
282
+ - spec/lib/movie_organizer/tv_show_spec.rb
283
+ - spec/lib/movie_organizer_spec.rb
284
+ - spec/spec_helper.rb
285
+ - spec/support/filename_mappings.yml
286
+ - spec/support/shared_contexts/media_shared.rb
287
+ - tmdb-logo-primary-green.png
288
+ homepage: https://github.com/midwire/movie_organizer
289
+ licenses:
290
+ - MIT
291
+ metadata: {}
292
+ post_install_message:
293
+ rdoc_options: []
294
+ require_paths:
295
+ - lib
296
+ required_ruby_version: !ruby/object:Gem::Requirement
297
+ requirements:
298
+ - - ">="
299
+ - !ruby/object:Gem::Version
300
+ version: 2.3.0
301
+ required_rubygems_version: !ruby/object:Gem::Requirement
302
+ requirements:
303
+ - - ">="
304
+ - !ruby/object:Gem::Version
305
+ version: '0'
306
+ requirements: []
307
+ rubyforge_project:
308
+ rubygems_version: 2.7.3
309
+ signing_key:
310
+ specification_version: 4
311
+ summary: Automatically organize movies, tv shows and home videos.
312
+ test_files:
313
+ - spec/files/The.Walking.Dead.S04E08.HDTV.x264-2HD.mp4
314
+ - spec/files/movies/Dunkirk.2017.BluRay.1080p/Dunkirk.2017.BluRay.1080p.mp4
315
+ - spec/files/movies/The Matrix (1999) [BluRay] [1080p]/The Matrix (1999) [BluRay]
316
+ [1080p].mp4
317
+ - spec/files/short_video.mp4
318
+ - spec/fixtures/.blank_settings.yml
319
+ - spec/fixtures/.movie_organizer.yml
320
+ - spec/fixtures/.no_source_directories.yml
321
+ - spec/lib/movie_organizer/file_copier_spec.rb
322
+ - spec/lib/movie_organizer/logger_spec.rb
323
+ - spec/lib/movie_organizer/media_list_spec.rb
324
+ - spec/lib/movie_organizer/media_spec.rb
325
+ - spec/lib/movie_organizer/movie_spec.rb
326
+ - spec/lib/movie_organizer/organizer_spec.rb
327
+ - spec/lib/movie_organizer/tv_show_spec.rb
328
+ - spec/lib/movie_organizer_spec.rb
329
+ - spec/spec_helper.rb
330
+ - spec/support/filename_mappings.yml
331
+ - spec/support/shared_contexts/media_shared.rb