presso 1.0.0

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/presso.rb +53 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0676312e4ccbb2170348ba9c0b3f09f39cf44811
4
+ data.tar.gz: b827bd3ad3277dc6de6496b5d46817a6959bdb9c
5
+ SHA512:
6
+ metadata.gz: acaa585142de00a910fe1cf3209513030854e116c77a754c399df4646bb097fc3a5e95c77a88a2b3b5886aac79702f8d2d2a824e467f49833e7a0c68dc0d3bfe
7
+ data.tar.gz: b3170a14985018015fb923350d69ae1ad53900c404b24c0de9ef1e8b66215fefab7ba12d831fc5ae28b115701761a38b7e58de99783220f0288210c664db843e
data/lib/presso.rb ADDED
@@ -0,0 +1,53 @@
1
+ require 'java'
2
+
3
+ raise LoadError, "Incompatible JRuby version. Use at least JRuby 1.7.4. See JRUBY-7157." if JRUBY_VERSION =~ /^1\.7\.[0-3]$/
4
+
5
+ class Presso
6
+ VERSION = '1.0.0'.freeze
7
+
8
+ module JavaUtilZip
9
+ include_package 'java.util.zip'
10
+ end
11
+
12
+ PressoError = Class.new(StandardError)
13
+
14
+ def zip_dir(output_path, input_directory)
15
+ output_path = File.expand_path(output_path)
16
+ Dir.chdir(input_directory) do
17
+ File.open(output_path, File::WRONLY|File::CREAT|File::EXCL, binmode: true) do |file|
18
+ stream = JavaUtilZip::ZipOutputStream.new(file.to_outputstream)
19
+ Dir['**/*'].each do |path|
20
+ if File.file?(path)
21
+ stream.putNextEntry(JavaUtilZip::ZipEntry.new(path))
22
+ IO.copy_stream(path, stream.to_io)
23
+ elsif File.directory?(path)
24
+ stream.putNextEntry(JavaUtilZip::ZipEntry.new(path+'/'))
25
+ else
26
+ raise PressoError, "File #{path} is not a regular file."
27
+ end
28
+ end
29
+ stream.close
30
+ end
31
+ end
32
+ end
33
+
34
+ def unzip(input_path, output_directory)
35
+ raise PressoError, "Target directory #{output_directory} already exists." if File.exists?(output_directory)
36
+ File.open(input_path, 'rb') do |file|
37
+ stream = JavaUtilZip::ZipInputStream.new(file.to_inputstream)
38
+ FileUtils.mkdir_p(output_directory)
39
+ Dir.chdir(output_directory) do
40
+ while (entry = stream.next_entry)
41
+ if entry.directory?
42
+ FileUtils.mkdir_p(entry.name)
43
+ else
44
+ FileUtils.mkdir_p(File.dirname(entry.name))
45
+ IO.copy_stream(stream.to_io, entry.name)
46
+ end
47
+ stream.close_entry
48
+ end
49
+ end
50
+ stream.close
51
+ end
52
+ end
53
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: presso
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Burt Developers
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-04 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Easy zip and unzip, backed by java.util.zip
14
+ email:
15
+ - bjorn@burtcorp.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/presso.rb
21
+ homepage: https://github.com/burtcorp/presso
22
+ licenses: []
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.2.2
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: A zip library for JRuby
44
+ test_files: []