extracter 1.2.32 → 1.3.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +116 -87
- data/bin/extract +2 -2
- data/doc/README.gen +117 -88
- data/extracter.gemspec +12 -32
- data/lib/extracter/base/base.rb +354 -43
- data/lib/extracter/class/extracter.rb +722 -559
- data/lib/extracter/constants/constants.rb +38 -39
- data/lib/extracter/requires/require_the_extracter_project.rb +1 -1
- data/lib/extracter/requires/require_the_toplevel_methods.rb +7 -0
- data/lib/extracter/toplevel_methods/toplevel_methods.rb +99 -0
- data/lib/extracter/version/version.rb +2 -2
- data/lib/extracter.rb +0 -0
- data/test/testing_are_we_on_windows.rb +10 -0
- data/test/testing_class_extracter.rb +3 -2
- data/test/testing_class_method_extract_what_to.rb +4 -1
- metadata +31 -35
- data/bin/extract_it +0 -13
- data/lib/extracter/class/extract_this_archive.rb +0 -289
- data/lib/extracter/extract_it/extract_it.rb +0 -241
- data/lib/extracter/toplevel_methods/is_this_a_valid_archive.rb +0 -41
- data/lib/extracter/toplevel_methods/misc.rb +0 -34
@@ -16,7 +16,7 @@ module Extracter
|
|
16
16
|
#
|
17
17
|
# Archives that can be extracted, have to be registered in this Array.
|
18
18
|
#
|
19
|
-
#
|
19
|
+
# This Array has to be sorted alphabetically.
|
20
20
|
#
|
21
21
|
# The libreoffice format .odt is just like .zip.
|
22
22
|
# ========================================================================= #
|
@@ -53,22 +53,13 @@ module Extracter
|
|
53
53
|
zst
|
54
54
|
)
|
55
55
|
|
56
|
-
# ========================================================================= #
|
57
|
-
# === LAST_UPDATED
|
58
|
-
#
|
59
|
-
# When this class was last updated/releasted. This is not a hugely
|
60
|
-
# important constat, so do not worry too much if this may be heavily
|
61
|
-
# outdated eventually.
|
62
|
-
# ========================================================================= #
|
63
|
-
LAST_UPDATED = '08.10.2021'
|
64
|
-
|
65
56
|
# ========================================================================= #
|
66
57
|
# === TEMP_DIR
|
67
58
|
#
|
68
59
|
# Set the temp dir here.
|
69
60
|
# ========================================================================= #
|
70
61
|
if ENV['MY_TEMP']
|
71
|
-
TEMP_DIR = ENV['MY_TEMP']
|
62
|
+
TEMP_DIR = "#{ENV['MY_TEMP']}/"
|
72
63
|
else
|
73
64
|
# ======================================================================= #
|
74
65
|
# If this environment variable is unavailable then use a conservative
|
@@ -77,21 +68,20 @@ module Extracter
|
|
77
68
|
TEMP_DIR = '/tmp/'
|
78
69
|
end
|
79
70
|
|
80
|
-
# ========================================================================= #
|
81
|
-
# === GEM_UNPACK_COMMAND
|
82
|
-
#
|
83
|
-
# The command to use to unpack ruby .gems.
|
84
|
-
# We can pass the ---target=DIR syntax to extract to a specific location.
|
85
|
-
# ========================================================================= #
|
86
|
-
GEM_UNPACK_COMMAND = 'gem unpack'
|
87
|
-
|
88
71
|
# ========================================================================= #
|
89
72
|
# === UNPACK_COMMAND_TO_USE_ON_WINDOWS
|
90
73
|
#
|
91
|
-
# The full commandline will look like this:
|
74
|
+
# The full commandline when on windows will look like this:
|
75
|
+
#
|
76
|
+
# 7z x -so C:\home\x\src\htop\htop-3.0.5.tar.xz | 7z x -si -ttar
|
92
77
|
#
|
93
|
-
#
|
78
|
+
# This was used in the RBT project, in the past, e. g. via code
|
79
|
+
# such as:
|
94
80
|
#
|
81
|
+
# cmd = '7z x "'.dup
|
82
|
+
# cmd << i
|
83
|
+
# cmd << '" -so | 7z x -aoa -si -ttar -o"'+program_name_and_program_version?.to_s+'"'
|
84
|
+
#
|
95
85
|
# ========================================================================= #
|
96
86
|
UNPACK_COMMAND_TO_USE_ON_WINDOWS = '7z x -so '
|
97
87
|
|
@@ -100,23 +90,6 @@ module Extracter
|
|
100
90
|
# ========================================================================= #
|
101
91
|
SECOND_UNPACK_COMMAND_TO_USE_ON_WINDOWS = '7z x -si -ttar'
|
102
92
|
|
103
|
-
# ========================================================================= #
|
104
|
-
# === COMMAND_TO_EXTRACT_BSDTAR_ARCHIVES
|
105
|
-
#
|
106
|
-
# This command is to specifically extract rpm-archives.
|
107
|
-
# ========================================================================= #
|
108
|
-
COMMAND_TO_EXTRACT_BSDTAR_ARCHIVES = 'bsdtar xfv'
|
109
|
-
|
110
|
-
# ========================================================================= #
|
111
|
-
# === COMMAND_TO_EXTRACT_TAR_BZ2_FILES
|
112
|
-
# ========================================================================= #
|
113
|
-
COMMAND_TO_EXTRACT_TAR_BZ2_FILES = 'tar -xjvf'
|
114
|
-
|
115
|
-
# ========================================================================= #
|
116
|
-
# === COMMAND_TO_EXTRACT_JAR_ARCHIVES
|
117
|
-
# ========================================================================= #
|
118
|
-
COMMAND_TO_EXTRACT_JAR_ARCHIVES = 'jar xvf'
|
119
|
-
|
120
93
|
# ========================================================================= #
|
121
94
|
# === COMMAND_TO_EXTRACT_TGZ_FILES
|
122
95
|
#
|
@@ -154,4 +127,30 @@ module Extracter
|
|
154
127
|
# ========================================================================= #
|
155
128
|
COMMAND_TO_EXTRACT_TAR_FILES = 'tar -xvf'
|
156
129
|
|
157
|
-
|
130
|
+
# ========================================================================= #
|
131
|
+
# === GEM_UNPACK_COMMAND
|
132
|
+
#
|
133
|
+
# The command to use to unpack ruby .gems.
|
134
|
+
#
|
135
|
+
# We can pass the ---target=DIR syntax to extract to a specific location.
|
136
|
+
# ========================================================================= #
|
137
|
+
GEM_UNPACK_COMMAND = 'gem unpack'
|
138
|
+
|
139
|
+
# ========================================================================= #
|
140
|
+
# === COMMAND_TO_EXTRACT_BSDTAR_ARCHIVES
|
141
|
+
#
|
142
|
+
# This command is to specifically extract rpm-archives.
|
143
|
+
# ========================================================================= #
|
144
|
+
COMMAND_TO_EXTRACT_BSDTAR_ARCHIVES = 'bsdtar xfv'
|
145
|
+
|
146
|
+
# ========================================================================= #
|
147
|
+
# === COMMAND_TO_EXTRACT_TAR_BZ2_FILES
|
148
|
+
# ========================================================================= #
|
149
|
+
COMMAND_TO_EXTRACT_TAR_BZ2_FILES = 'tar -xjvf'
|
150
|
+
|
151
|
+
# ========================================================================= #
|
152
|
+
# === COMMAND_TO_EXTRACT_JAR_ARCHIVES
|
153
|
+
# ========================================================================= #
|
154
|
+
COMMAND_TO_EXTRACT_JAR_ARCHIVES = 'jar xvf'
|
155
|
+
|
156
|
+
end
|
@@ -5,4 +5,4 @@
|
|
5
5
|
# require 'extracter/requires/require_the_extracter_project.rb'
|
6
6
|
# =========================================================================== #
|
7
7
|
require 'extracter/class/extracter.rb'
|
8
|
-
require 'extracter/
|
8
|
+
require 'extracter/requires/require_the_toplevel_methods.rb'
|
@@ -0,0 +1,7 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'extracter/requires/require_the_toplevel_methods.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
require 'extracter/toplevel_methods/toplevel_methods.rb'
|
@@ -0,0 +1,99 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'extracter/toplevel_methods/is_this_a_valid_archive.rb'
|
6
|
+
# Extracter.is_this_a_valid_archive?
|
7
|
+
# =========================================================================== #
|
8
|
+
module Extracter
|
9
|
+
|
10
|
+
require 'extracter/constants/constants.rb'
|
11
|
+
|
12
|
+
# ========================================================================= #
|
13
|
+
# === Extracter.return_pwd
|
14
|
+
# ========================================================================= #
|
15
|
+
def self.return_pwd
|
16
|
+
"#{Dir.pwd}/".squeeze('/')
|
17
|
+
end
|
18
|
+
|
19
|
+
# ========================================================================= #
|
20
|
+
# === Extracter.are_we_on_windows?
|
21
|
+
#
|
22
|
+
# This method can be used to determine whether we are on windows (as
|
23
|
+
# our primary platform) or whether we are not.
|
24
|
+
# ========================================================================= #
|
25
|
+
def self.are_we_on_windows?
|
26
|
+
RUBY_PLATFORM.include?('win') or
|
27
|
+
RUBY_PLATFORM.include?('mingw')
|
28
|
+
end
|
29
|
+
|
30
|
+
# ========================================================================= #
|
31
|
+
# === Extracter.are_we_on_windows?
|
32
|
+
# ========================================================================= #
|
33
|
+
def self.this_on_windows(i)
|
34
|
+
_ = UNPACK_COMMAND_TO_USE_ON_WINDOWS+' '+
|
35
|
+
File.absolute_path(i)+
|
36
|
+
' | '+
|
37
|
+
SECOND_UNPACK_COMMAND_TO_USE_ON_WINDOWS
|
38
|
+
esystem _
|
39
|
+
end
|
40
|
+
|
41
|
+
# ========================================================================= #
|
42
|
+
# === Extracter.esystem
|
43
|
+
# ========================================================================= #
|
44
|
+
def self.esystem(i)
|
45
|
+
puts i
|
46
|
+
system(i)
|
47
|
+
end
|
48
|
+
|
49
|
+
# ========================================================================= #
|
50
|
+
# === Extracter.remove_archive_type
|
51
|
+
#
|
52
|
+
# This method will remove suffix-types from a given input String.
|
53
|
+
# ========================================================================= #
|
54
|
+
def self.remove_archive_type(i)
|
55
|
+
return i.delete_suffix('.xz').
|
56
|
+
delete_suffix('.tgz').
|
57
|
+
delete_suffix('.bz2').
|
58
|
+
delete_suffix('.gz').
|
59
|
+
delete_suffix('.tar').
|
60
|
+
delete_suffix('.zip').
|
61
|
+
delete_suffix('.gem')
|
62
|
+
end; self.instance_eval { alias remove_file_suffix remove_archive_type } # === Extracter.remove_file_suffix
|
63
|
+
|
64
|
+
# ========================================================================= #
|
65
|
+
# === Extracter.is_this_a_valid_archive?
|
66
|
+
#
|
67
|
+
# Query whether the input given to this method is a valid archive.
|
68
|
+
#
|
69
|
+
# This allows us to determine whether the Extracter project can
|
70
|
+
# deal with the given archive at hand or whether it can not.
|
71
|
+
#
|
72
|
+
# The registered formats are stored in the constant
|
73
|
+
# ARRAY_REGISTERED_ARCHIVES.
|
74
|
+
# ========================================================================= #
|
75
|
+
def self.is_this_a_valid_archive?(
|
76
|
+
i, # The given input, such as "foobar.zip".
|
77
|
+
array_registered_archives = ARRAY_REGISTERED_ARCHIVES
|
78
|
+
)
|
79
|
+
if i.is_a? Array
|
80
|
+
i = i.first
|
81
|
+
end
|
82
|
+
return_value = false
|
83
|
+
array_registered_archives.each {|entry|
|
84
|
+
return_value = true if i =~ /#{entry}$/i
|
85
|
+
}
|
86
|
+
return return_value
|
87
|
+
end; self.instance_eval { alias is_archive? is_this_a_valid_archive? } # === Extracter.is_archive?
|
88
|
+
self.instance_eval { alias is_this_a_valid_archive? is_this_a_valid_archive? } # === Extracter.is_this_a_valid_archive?
|
89
|
+
|
90
|
+
end; Extract = Extracter # And keep a pseudo-alias here.
|
91
|
+
|
92
|
+
if __FILE__ == $PROGRAM_NAME
|
93
|
+
alias e puts
|
94
|
+
e
|
95
|
+
e 'Are we on windows? '+Extracter.are_we_on_windows?.to_s
|
96
|
+
e
|
97
|
+
pp Extracter.is_this_a_valid_archive?(ARGV)
|
98
|
+
e
|
99
|
+
end
|
@@ -11,11 +11,11 @@ module Extracter
|
|
11
11
|
#
|
12
12
|
# Which specific version to use for class Extracter.
|
13
13
|
# ========================================================================= #
|
14
|
-
VERSION = '1.
|
14
|
+
VERSION = '1.3.6'
|
15
15
|
|
16
16
|
# ========================================================================= #
|
17
17
|
# === LAST_UPDATE
|
18
18
|
# ========================================================================= #
|
19
|
-
LAST_UPATE = '
|
19
|
+
LAST_UPATE = '26.03.2024'
|
20
20
|
|
21
21
|
end
|
data/lib/extracter.rb
CHANGED
File without changes
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
if __FILE__ == $PROGRAM_NAME
|
6
|
+
require 'fileutils'
|
7
|
+
require 'extracter'
|
8
|
+
require 'colours/colours_e_autoinclude.rb'
|
9
|
+
e 'Are we on windows? '+Extracter.are_we_on_windows?.to_s
|
10
|
+
end #
|
@@ -13,7 +13,8 @@ if __FILE__ == $PROGRAM_NAME
|
|
13
13
|
e
|
14
14
|
e Extracter.is_this_a_valid_archive? 'foo.php'
|
15
15
|
# Extracter.new(ARGV)
|
16
|
-
|
16
|
+
what = '/home/x/src/recode/recode-3.7.1.tar.xz'
|
17
|
+
FileUtils.cp(what,'/Depot/j/') # Copy it there.
|
17
18
|
Extracter.what_to '/Depot/j/recode-3.7.1.tar.xzg', '/Depot/jj' # This line is deliberately wrong.
|
18
19
|
Extracter.what_to '/Depot/j/recode-3.7.1.tar.xz', '/Depot/jj'
|
19
20
|
Extracter.what_to '/Depot/j/recode-3.7.1.gzip', '/Depot/jj'
|
@@ -22,4 +23,4 @@ if __FILE__ == $PROGRAM_NAME
|
|
22
23
|
e Colours.orange("3) Next testing "+sfancy("Extracter['/home/x/src/libzip/']"))
|
23
24
|
Extracter['/home/x/src/libzip/', to: extract_to]
|
24
25
|
# Test the strip-components part next:
|
25
|
-
end # testextracter
|
26
|
+
end # testextracter
|
@@ -6,4 +6,7 @@
|
|
6
6
|
# =========================================================================== #
|
7
7
|
require 'extracter/class/extracter.rb'
|
8
8
|
|
9
|
-
|
9
|
+
what = '/home/x/src/php/php-8.3.4.tar.xz'
|
10
|
+
to = '/home/x/Temp/'
|
11
|
+
|
12
|
+
Extracter.extract_what_to(what, to)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: extracter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert A. Heiler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-03-
|
11
|
+
date: 2024-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opn
|
@@ -24,19 +24,23 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
-
description:
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
27
|
+
description: |2+
|
28
|
+
|
29
|
+
This fairly small gem can be used to extract different
|
30
|
+
archive formats, such as .tar.bz2, .tar.gz, .tbz,
|
31
|
+
.zip, .gem, .lzma and various more.
|
32
|
+
|
33
|
+
Audio can be extracted as well, via ffmpeg, if the gem called
|
34
|
+
multimedia_paradise is installed.
|
35
|
+
|
36
|
+
This project, however had, depends on external tools,
|
37
|
+
such as tar (on Linux) or 7z / 7zip (on Windows), so
|
38
|
+
these have to be installed first.
|
39
|
+
|
40
|
+
For more information about this project have a look
|
41
|
+
at the homepage, at
|
42
|
+
https://rubygems.org/gems/extracter.
|
43
|
+
|
40
44
|
email: shevy@inbox.lt
|
41
45
|
executables: []
|
42
46
|
extensions: []
|
@@ -44,19 +48,17 @@ extra_rdoc_files: []
|
|
44
48
|
files:
|
45
49
|
- README.md
|
46
50
|
- bin/extract
|
47
|
-
- bin/extract_it
|
48
51
|
- doc/README.gen
|
49
52
|
- extracter.gemspec
|
50
53
|
- lib/extracter.rb
|
51
54
|
- lib/extracter/base/base.rb
|
52
|
-
- lib/extracter/class/extract_this_archive.rb
|
53
55
|
- lib/extracter/class/extracter.rb
|
54
56
|
- lib/extracter/constants/constants.rb
|
55
|
-
- lib/extracter/extract_it/extract_it.rb
|
56
57
|
- lib/extracter/requires/require_the_extracter_project.rb
|
57
|
-
- lib/extracter/
|
58
|
-
- lib/extracter/toplevel_methods/
|
58
|
+
- lib/extracter/requires/require_the_toplevel_methods.rb
|
59
|
+
- lib/extracter/toplevel_methods/toplevel_methods.rb
|
59
60
|
- lib/extracter/version/version.rb
|
61
|
+
- test/testing_are_we_on_windows.rb
|
60
62
|
- test/testing_class_extracter.rb
|
61
63
|
- test/testing_class_method_extract_what_to.rb
|
62
64
|
homepage: https://rubygems.org/gems/extracter
|
@@ -85,22 +87,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
85
87
|
requirements:
|
86
88
|
- - ">="
|
87
89
|
- !ruby/object:Gem::Version
|
88
|
-
version: 3.5.
|
90
|
+
version: 3.5.3
|
89
91
|
requirements: []
|
90
|
-
rubygems_version: 3.5.
|
92
|
+
rubygems_version: 3.5.3
|
91
93
|
signing_key:
|
92
94
|
specification_version: 4
|
93
|
-
summary:
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
can be passed to the method new() specifies where this should be extract to. For
|
100
|
-
example: Extracter.new(''/foo/bla-1.0.tar.bz2'', ''/opt'') This would extract
|
101
|
-
to the /opt directory. You can query whether input is an archive or not via: Extracter.is_archive?
|
102
|
-
''foo.tar.xz'' As of April 2014 we also provide a bin/extract file, so that you
|
103
|
-
can simply extract something from the commandline. Since as of November 2018, class
|
104
|
-
Extracter can also "extract" .iso files. (The .iso will be mounted to a directory
|
105
|
-
that will be created, actually.)'
|
95
|
+
summary: This fairly small gem can be used to extract different archive formats, such
|
96
|
+
as .tar.bz2, .tar.gz, .tbz, .zip, .gem, .lzma and various more. Audio can be extracted
|
97
|
+
as well, via ffmpeg, if the gem called multimedia_paradise is installed. This project,
|
98
|
+
however had, depends on external tools, such as tar (on Linux) or 7z / 7zip (on
|
99
|
+
Windows), so these have to be installed first. For more information about this
|
100
|
+
project have a look at the homepage, at https://rubygems.org/gems/extracter.
|
106
101
|
test_files: []
|
102
|
+
...
|
data/bin/extract_it
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby -w
|
2
|
-
# Encoding: UTF-8
|
3
|
-
# frozen_string_literal: true
|
4
|
-
# =========================================================================== #
|
5
|
-
require 'extracter/requires/require_the_extracter_project.rb'
|
6
|
-
|
7
|
-
_ = Extracter.extract_it(ARGV, false)
|
8
|
-
if ARGV[1]
|
9
|
-
_.show_commands_used
|
10
|
-
else
|
11
|
-
_.be_silent
|
12
|
-
end
|
13
|
-
_.run # extractit
|