unpack 0.1.4 → 0.1.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/lib/unpack.rb +25 -2
- data/spec/data/{rar_real → from}/110_real_.file.rar +0 -0
- data/spec/data/{rar_real → from}/120_real_.file.rar +0 -0
- data/spec/data/{rar_real → from}/167_real_.file.rar +0 -0
- data/spec/data/{rar_real → from}/777_real_.file.rar +0 -0
- data/spec/data/{rar_real → from}/918_real_.file.rar +0 -0
- data/spec/data/from/some_zip_files.zip +0 -0
- data/spec/data/from/test_package.rar +0 -0
- data/spec/data/rar_real/test_package.rar +0 -0
- data/spec/unpack_spec.rb +65 -0
- data/unpack.gemspec +2 -2
- metadata +20 -14
data/lib/unpack.rb
CHANGED
@@ -3,7 +3,7 @@ require 'unpack/container'
|
|
3
3
|
require 'fileutils'
|
4
4
|
|
5
5
|
class Unpack
|
6
|
-
attr_accessor :files, :options
|
6
|
+
attr_accessor :files, :options, :directory, :removeable
|
7
7
|
|
8
8
|
def initialize(args)
|
9
9
|
args.keys.each { |name| instance_variable_set "@" + name.to_s, args[name] }
|
@@ -29,6 +29,26 @@ class Unpack
|
|
29
29
|
|
30
30
|
raise Exception.new("You need to specify a valid path") if @directory.nil? or not Dir.exist?(@directory)
|
31
31
|
raise Exception.new("You need unzip to keep going") if %x{whereis unzip}.empty?
|
32
|
+
|
33
|
+
@files = []
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.it!(args)
|
37
|
+
# If no to argument is given, file will be unpacked in the same dir
|
38
|
+
args[:to] = args[:to].nil? ? File.dirname(args[:file]) : args[:to]
|
39
|
+
|
40
|
+
# Adding the options that is being passed to {it!} directly to {Unpack}
|
41
|
+
this = self.new(directory: args[:to], options: {min_files: 0}.merge(args))
|
42
|
+
|
43
|
+
# Is the file path absolute ? good, do nothing : get the absolute path
|
44
|
+
file = args[:file].match(/^\//) ? args[:file] : File.expand_path(args[:file])
|
45
|
+
|
46
|
+
this.files << file
|
47
|
+
this.unpack!
|
48
|
+
this.wipe! if this.options[:remove]
|
49
|
+
|
50
|
+
# Only one files has been unpacked, that is why we select the first object in the list
|
51
|
+
this.diff.first
|
32
52
|
end
|
33
53
|
|
34
54
|
def self.runner!(directory = '.', options = {})
|
@@ -69,7 +89,10 @@ class Unpack
|
|
69
89
|
def unpack!
|
70
90
|
@files.each do |file|
|
71
91
|
type = Mimer.identify(file)
|
72
|
-
|
92
|
+
|
93
|
+
# To what directory want we to unpack the file ? The same as the file : The one that where specified in {initialize}
|
94
|
+
path = @directory == File.dirname(file) ? File.dirname(file) : @directory
|
95
|
+
|
73
96
|
before = Dir.new(path).entries
|
74
97
|
|
75
98
|
if type.zip?
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
Binary file
|
Binary file
|
Binary file
|
data/spec/unpack_spec.rb
CHANGED
@@ -2,6 +2,14 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper.rb')
|
|
2
2
|
|
3
3
|
# Preparing the file structure
|
4
4
|
def clear!
|
5
|
+
|
6
|
+
# Removes old files in the test directory
|
7
|
+
['to', 'from'].each do |folder|
|
8
|
+
Dir.glob(File.expand_path(File.dirname(__FILE__) + "/data/#{folder}/*")).each do |file|
|
9
|
+
FileUtils.rm(file)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
5
13
|
{'some_zip_files.zip' => 'zip_real', 'test_package.rar' => 'rar_real'}.each_pair do |taget|
|
6
14
|
|
7
15
|
# Removes old files in the test directory
|
@@ -18,8 +26,15 @@ def clear!
|
|
18
26
|
Dir.glob(File.expand_path(File.dirname(__FILE__) + "/data/movie_to/*")).each do |file|
|
19
27
|
FileUtils.rm(file) if Mimer.identify(file).text?
|
20
28
|
end
|
29
|
+
|
30
|
+
{'test_package.rar' => 'to', 'some_zip_files.zip' => 'to'}.each_pair do |taget|
|
31
|
+
src = File.expand_path(File.dirname(__FILE__) + "/data/o_files/#{taget.first}")
|
32
|
+
dest = File.expand_path(File.dirname(__FILE__) + "/data/from/#{taget.first}")
|
33
|
+
FileUtils.copy_file(src, dest)
|
34
|
+
end
|
21
35
|
end
|
22
36
|
|
37
|
+
|
23
38
|
describe Unpack, "should work with the runner" do
|
24
39
|
before(:each) do
|
25
40
|
clear!
|
@@ -258,4 +273,54 @@ describe Unpack, "should work with all kind of paths" do
|
|
258
273
|
Unpack.new(directory: "spec/random")
|
259
274
|
}.should raise_error(Exception)
|
260
275
|
end
|
276
|
+
end
|
277
|
+
|
278
|
+
describe Unpack, "should be able to unpack" do
|
279
|
+
before(:each) do
|
280
|
+
clear!
|
281
|
+
@path = File.expand_path('spec/data/to/')
|
282
|
+
@from = File.expand_path('spec/data/from/')
|
283
|
+
end
|
284
|
+
|
285
|
+
it "should be able to unpack an unknown file from one dir to a nother" do
|
286
|
+
['some_zip_files.zip', "test_package.rar"].each do |inner|
|
287
|
+
files = %x{cd #{@path} && ls}.split(/\n/).count
|
288
|
+
Unpack.it!(file: File.expand_path("spec/data/from/#{inner}"), to: @path)
|
289
|
+
%x{cd #{@path} && ls}.split(/\n/).count.should_not eq(files)
|
290
|
+
clear!
|
291
|
+
end
|
292
|
+
end
|
293
|
+
|
294
|
+
it "should be able to unpack relative files" do
|
295
|
+
['some_zip_files.zip', "test_package.rar"].each do |inner|
|
296
|
+
files = %x{cd #{@path} && ls}.split(/\n/).count
|
297
|
+
Unpack.it!(file: "spec/data/from/#{inner}", to: 'spec/data/to')
|
298
|
+
%x{cd #{@path} && ls}.split(/\n/).count.should_not eq(files)
|
299
|
+
clear!
|
300
|
+
end
|
301
|
+
end
|
302
|
+
|
303
|
+
it "should be able to unpack to the same folder" do
|
304
|
+
['some_zip_files.zip', "test_package.rar"].each do |inner|
|
305
|
+
files = %x{cd #{@from} && ls}.split(/\n/).count
|
306
|
+
Unpack.it!(file: "spec/data/from/#{inner}")
|
307
|
+
%x{cd #{@from} && ls}.split(/\n/).count.should_not eq(files)
|
308
|
+
clear!
|
309
|
+
end
|
310
|
+
end
|
311
|
+
|
312
|
+
it "should raise an error when the path does not exist" do
|
313
|
+
lambda{
|
314
|
+
Unpack.it!(file: "some/random/folder")
|
315
|
+
}.should raise_error(Exception)
|
316
|
+
end
|
317
|
+
|
318
|
+
it "should remove the old archive files" do
|
319
|
+
Unpack.it!(file: "spec/data/from/test_package.rar", remove: true)
|
320
|
+
%x{cd #{@from} && ls | grep test_package.rar}.should be_empty
|
321
|
+
end
|
322
|
+
|
323
|
+
it "should have some unarchived files" do
|
324
|
+
Unpack.it!(file: "spec/data/from/test_package.rar").should have(5).files
|
325
|
+
end
|
261
326
|
end
|
data/unpack.gemspec
CHANGED
@@ -3,13 +3,13 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "unpack"
|
6
|
-
s.version = "0.1.
|
6
|
+
s.version = "0.1.6"
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
8
|
s.authors = ["Linus Oleander"]
|
9
9
|
s.email = ["linus@oleander.nu"]
|
10
10
|
s.homepage = "https://github.com/oleander/Unpack"
|
11
11
|
s.summary = %q{An automated unrar gem}
|
12
|
-
s.description = %q{An automated unpacking tool for
|
12
|
+
s.description = %q{An automated unpacking tool for *nix, using Ruby 1.9.2}
|
13
13
|
|
14
14
|
s.files = `git ls-files`.split("\n")
|
15
15
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 6
|
9
|
+
version: 0.1.6
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Linus Oleander
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-01-
|
17
|
+
date: 2011-01-30 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -45,7 +45,7 @@ dependencies:
|
|
45
45
|
version: 0.0.4
|
46
46
|
type: :runtime
|
47
47
|
version_requirements: *id002
|
48
|
-
description: An automated unpacking tool for
|
48
|
+
description: An automated unpacking tool for *nix, using Ruby 1.9.2
|
49
49
|
email:
|
50
50
|
- linus@oleander.nu
|
51
51
|
executables:
|
@@ -63,6 +63,13 @@ files:
|
|
63
63
|
- bin/unrar
|
64
64
|
- lib/unpack.rb
|
65
65
|
- lib/unpack/container.rb
|
66
|
+
- spec/data/from/110_real_.file.rar
|
67
|
+
- spec/data/from/120_real_.file.rar
|
68
|
+
- spec/data/from/167_real_.file.rar
|
69
|
+
- spec/data/from/777_real_.file.rar
|
70
|
+
- spec/data/from/918_real_.file.rar
|
71
|
+
- spec/data/from/some_zip_files.zip
|
72
|
+
- spec/data/from/test_package.rar
|
66
73
|
- spec/data/o_files/some_zip_files.zip
|
67
74
|
- spec/data/o_files/test_package.rar
|
68
75
|
- spec/data/rar/110_accessible_.rar
|
@@ -166,11 +173,7 @@ files:
|
|
166
173
|
- spec/data/rar/subdir/22_subtitle_.rar
|
167
174
|
- spec/data/rar/subdir/483_subtitle_.rar
|
168
175
|
- spec/data/rar/subdir/639_subtitle_.rar
|
169
|
-
- spec/data/rar_real/
|
170
|
-
- spec/data/rar_real/120_real_.file.rar
|
171
|
-
- spec/data/rar_real/167_real_.file.rar
|
172
|
-
- spec/data/rar_real/777_real_.file.rar
|
173
|
-
- spec/data/rar_real/918_real_.file.rar
|
176
|
+
- spec/data/rar_real/test_package.rar
|
174
177
|
- spec/data/zip_real/some_zip_files.zip
|
175
178
|
- spec/spec_helper.rb
|
176
179
|
- spec/unpack_spec.rb
|
@@ -208,6 +211,13 @@ signing_key:
|
|
208
211
|
specification_version: 3
|
209
212
|
summary: An automated unrar gem
|
210
213
|
test_files:
|
214
|
+
- spec/data/from/110_real_.file.rar
|
215
|
+
- spec/data/from/120_real_.file.rar
|
216
|
+
- spec/data/from/167_real_.file.rar
|
217
|
+
- spec/data/from/777_real_.file.rar
|
218
|
+
- spec/data/from/918_real_.file.rar
|
219
|
+
- spec/data/from/some_zip_files.zip
|
220
|
+
- spec/data/from/test_package.rar
|
211
221
|
- spec/data/o_files/some_zip_files.zip
|
212
222
|
- spec/data/o_files/test_package.rar
|
213
223
|
- spec/data/rar/110_accessible_.rar
|
@@ -311,11 +321,7 @@ test_files:
|
|
311
321
|
- spec/data/rar/subdir/22_subtitle_.rar
|
312
322
|
- spec/data/rar/subdir/483_subtitle_.rar
|
313
323
|
- spec/data/rar/subdir/639_subtitle_.rar
|
314
|
-
- spec/data/rar_real/
|
315
|
-
- spec/data/rar_real/120_real_.file.rar
|
316
|
-
- spec/data/rar_real/167_real_.file.rar
|
317
|
-
- spec/data/rar_real/777_real_.file.rar
|
318
|
-
- spec/data/rar_real/918_real_.file.rar
|
324
|
+
- spec/data/rar_real/test_package.rar
|
319
325
|
- spec/data/zip_real/some_zip_files.zip
|
320
326
|
- spec/spec_helper.rb
|
321
327
|
- spec/unpack_spec.rb
|