excavate 0.1.1 → 0.2.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.
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