excavate 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '05638165852fcf0b41aa72e491d285182a11d2b5989cdee78393ff3f8719a017'
4
- data.tar.gz: b3a9e906c6dd35274e0e2b7a7e90f5c10ea8447b0f77c0b0cd59b277d224c06d
3
+ metadata.gz: e470dda7c9344874bb4cf08f4a769817036ad080139a88047042d402e9d5acec
4
+ data.tar.gz: 4428084b936ada2dd5ed5179007a73f150abe96763c7df117718d685d6384447
5
5
  SHA512:
6
- metadata.gz: 3eea36c08d18780f9131875d3ca78c33bdf558c957425d9b936f08eb1512bb298724f68f418edb3b3db0c941e228e11473826ad6a16b6fcf399935f73be03514
7
- data.tar.gz: 371061bead10a3716b931a9877153c3ea47e8666030fbb0dc7885217da32428f7f43298ec0a98a7fc0f2ef2ffd7a51af5e7371eedbee06f19d34b7a5995b8e3d
6
+ metadata.gz: f07491b7d61cd96023cf0ffd2054ce0484f4cba47165cd3bfc1e06c4c98678daa79dd50e54331d5c8c33435028e329751cc6a574d1d37e865caa6d468f66d043
7
+ data.tar.gz: f2bd8e1666a1d86cad6e33ae7b6a6861c53c990552710b2f3b828a2cb056c127e92ed31efa46ca2ce96ce19c9eab68819d814373eba01fb8b7b2240b55d4a0ad
data/README.adoc CHANGED
@@ -1,3 +1,7 @@
1
+ image:https://img.shields.io/gem/v/excavate.svg["Gem Version", link="https://rubygems.org/gems/excavate"]
2
+ // image:https://codeclimate.com/github/fontist/expressir/badges/gpa.svg["Code Climate", link="https://codeclimate.com/github/fontist/excavate"]
3
+ image:https://github.com/fontist/excavate/workflows/rspec/badge.svg["Build Status", link="https://github.com/fontist/excavate/actions?workflow=rspec"]
4
+
1
5
  = Excavate: Ruby gem to extract nested archives
2
6
 
3
7
  Extract nested archives with a single command.
data/excavate.gemspec CHANGED
@@ -27,6 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.require_paths = ["lib"]
28
28
 
29
29
  spec.add_runtime_dependency "arr-pm", "~> 0.0"
30
+ spec.add_runtime_dependency "ffi-libarchive-binary", "~> 0.0"
30
31
  spec.add_runtime_dependency "libmspack", "~> 0.1"
31
32
  spec.add_runtime_dependency "ruby-ole", "~> 1.0"
32
33
  spec.add_runtime_dependency "rubyzip", "~> 2.3"
@@ -7,6 +7,7 @@ module Excavate
7
7
  "msi" => Extractors::OleExtractor,
8
8
  "rpm" => Extractors::RpmExtractor,
9
9
  "tar" => Extractors::TarExtractor,
10
+ "pkg" => Extractors::XarExtractor,
10
11
  "zip" => Extractors::ZipExtractor }.freeze
11
12
 
12
13
  def initialize(archive)
@@ -6,4 +6,5 @@ require_relative "extractors/ole_extractor"
6
6
  require_relative "extractors/rpm_extractor"
7
7
  require_relative "extractors/seven_zip_extractor"
8
8
  require_relative "extractors/tar_extractor"
9
+ require_relative "extractors/xar_extractor"
9
10
  require_relative "extractors/zip_extractor"
@@ -0,0 +1,20 @@
1
+ require "ffi-libarchive-binary"
2
+
3
+ module Excavate
4
+ module Extractors
5
+ class XarExtractor < Extractor
6
+ def extract(target)
7
+ Dir.chdir(target) do
8
+ flags = ::Archive::EXTRACT_PERM
9
+ reader = ::Archive::Reader.open_filename(@archive)
10
+
11
+ reader.each_entry do |entry|
12
+ reader.extract(entry, flags.to_i)
13
+ end
14
+
15
+ reader.close
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Excavate
4
- VERSION = "0.1.1"
4
+ VERSION = "0.2.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: excavate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-05 00:00:00.000000000 Z
11
+ date: 2021-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: arr-pm
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ffi-libarchive-binary
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: libmspack
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -127,6 +141,7 @@ files:
127
141
  - lib/excavate/extractors/rpm_extractor.rb
128
142
  - lib/excavate/extractors/seven_zip_extractor.rb
129
143
  - lib/excavate/extractors/tar_extractor.rb
144
+ - lib/excavate/extractors/xar_extractor.rb
130
145
  - lib/excavate/extractors/zip_extractor.rb
131
146
  - lib/excavate/file_magic.rb
132
147
  - lib/excavate/utils.rb