extracter 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of extracter might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/README.md +70 -0
- data/USAGE.md +22 -0
- data/bin/extract +7 -0
- data/doc/README.gen +53 -0
- data/extracter.gemspec +111 -0
- data/lib/extracter.rb +5 -0
- data/lib/extracter/class_methods.rb +114 -0
- data/lib/extracter/colours.rb +124 -0
- data/lib/extracter/constants/constants.rb +95 -0
- data/lib/extracter/do_extract_what_to.rb +288 -0
- data/lib/extracter/extracter.rb +62 -0
- data/lib/extracter/help.rb +32 -0
- data/lib/extracter/initialize.rb +88 -0
- data/lib/extracter/misc.rb +428 -0
- data/lib/extracter/opn.rb +45 -0
- data/lib/extracter/reset.rb +64 -0
- data/lib/extracter/version/version.rb +16 -0
- data/test/testing_class_extracter.rb +24 -0
- metadata +163 -0
@@ -0,0 +1,45 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
class Extracter
|
6
|
+
|
7
|
+
begin
|
8
|
+
require 'opn'
|
9
|
+
rescue LoadError; end
|
10
|
+
|
11
|
+
# ========================================================================= #
|
12
|
+
# === custom_opn
|
13
|
+
#
|
14
|
+
# This is like opn(), except that we also check whether
|
15
|
+
# we should show the name or not.
|
16
|
+
# ========================================================================= #
|
17
|
+
def custom_opn
|
18
|
+
opnn unless @do_not_show_name
|
19
|
+
end; alias copn custom_opn # === copn
|
20
|
+
|
21
|
+
# ========================================================================= #
|
22
|
+
# === opnn
|
23
|
+
# ========================================================================= #
|
24
|
+
def opnn
|
25
|
+
if @use_opn and Object.const_defined?(:Opn)
|
26
|
+
Opn.opn(@use_this_opn_hash)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# ========================================================================= #
|
31
|
+
# === set_use_opn
|
32
|
+
# ========================================================================= #
|
33
|
+
def set_use_opn(i = true)
|
34
|
+
@use_opn = i
|
35
|
+
end
|
36
|
+
|
37
|
+
# ========================================================================= #
|
38
|
+
# === pad_opn_with_n_tokens
|
39
|
+
# ========================================================================= #
|
40
|
+
def pad_opn_with_n_tokens(n_tokens)
|
41
|
+
determine_default_opn_hash # Update this, just in case.
|
42
|
+
@use_this_opn_hash.update(padding: n_tokens)
|
43
|
+
end; alias set_pad_opn_with_n_tokens pad_opn_with_n_tokens # === set_pad_opn_with_n_tokens
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
class Extracter
|
6
|
+
|
7
|
+
# ========================================================================= #
|
8
|
+
# === reset (reset tag)
|
9
|
+
#
|
10
|
+
# Reset our main instance variables here.
|
11
|
+
# ========================================================================= #
|
12
|
+
def reset
|
13
|
+
# ======================================================================= #
|
14
|
+
# === @namespace
|
15
|
+
#
|
16
|
+
# Specify the main namespace to be used. This setting can be modified
|
17
|
+
# at "runtime".
|
18
|
+
# ======================================================================= #
|
19
|
+
@namespace = NAMESPACE
|
20
|
+
# ======================================================================= #
|
21
|
+
# === @debug
|
22
|
+
# ======================================================================= #
|
23
|
+
@debug = false
|
24
|
+
# ======================================================================= #
|
25
|
+
# === Extract to this location
|
26
|
+
#
|
27
|
+
# Next specify where to extract the archive in question, defaulting to
|
28
|
+
# the TEMP_DIR constant.
|
29
|
+
# ======================================================================= #
|
30
|
+
@extract_to_this_location = TEMP_DIR
|
31
|
+
# ======================================================================= #
|
32
|
+
# === @did_we_extract_already
|
33
|
+
#
|
34
|
+
# We will keep track of whether we already extracted or not.
|
35
|
+
# ======================================================================= #
|
36
|
+
@did_we_extract_already = false
|
37
|
+
# ======================================================================= #
|
38
|
+
# === @do_not_show_name
|
39
|
+
# ======================================================================= #
|
40
|
+
@do_not_show_name = false
|
41
|
+
# ======================================================================= #
|
42
|
+
# === @use_opn
|
43
|
+
# ======================================================================= #
|
44
|
+
@use_opn = true # ← Whether to use Opn by default or not.
|
45
|
+
# ======================================================================= #
|
46
|
+
# === @show_only_the_short_name_of_the_archive
|
47
|
+
# ======================================================================= #
|
48
|
+
@show_only_the_short_name_of_the_archive = SHOW_ONLY_THE_SHORT_NAME_OF_THE_ARCHIVE
|
49
|
+
# ======================================================================= #
|
50
|
+
# === @skip_extracting
|
51
|
+
# ======================================================================= #
|
52
|
+
@skip_extracting = false
|
53
|
+
# ======================================================================= #
|
54
|
+
# === @run_simulation
|
55
|
+
# ======================================================================= #
|
56
|
+
@run_simulation = false # ← Whether to run in simulation, or for "real".
|
57
|
+
set_extract_to_this_location
|
58
|
+
do_show_name # We will show the name usually.
|
59
|
+
enable_colours
|
60
|
+
determine_default_opn_hash
|
61
|
+
set_be_verbose(false)
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'extracter/version/version.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
class Extracter
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === Extracter::VERSION
|
11
|
+
#
|
12
|
+
# Which specific version to use for class Extracter.
|
13
|
+
# ========================================================================= #
|
14
|
+
VERSION = '1.1.0'
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,24 @@
|
|
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
|
+
extract_to = '/Depot/Temp/'
|
10
|
+
e 'Now testing class Extracter - some will fail, do not worry:'
|
11
|
+
e
|
12
|
+
e Colours.orange('1) Testing Extracter.is_this_a_valid_archive? functionality:')
|
13
|
+
e
|
14
|
+
e Extracter.is_this_a_valid_archive? 'foo.php'
|
15
|
+
# Extracter.new(ARGV)
|
16
|
+
FileUtils.cp('/Users/x/SRC/recode/recode-3.7.tar.xz','/Depot/j')
|
17
|
+
Extracter.what_to '/Depot/j/recode-3.7.tar.xzg', '/Depot/jj' # This line is deliberately wrong.
|
18
|
+
Extracter.what_to '/Depot/j/recode-3.7.tar.xz', '/Depot/jj'
|
19
|
+
Extracter.what_to '/Depot/j/recode-3.7.gzip', '/Depot/jj'
|
20
|
+
e Colours.orange("2) Next testing "+sfancy("Extracter['/Users/x/SRC/htop/']"))
|
21
|
+
Extracter['/Users/x/SRC/htop/']
|
22
|
+
e Colours.orange("3) Next testing "+sfancy("Extracter['/Users/x/SRC/libzip/']"))
|
23
|
+
Extracter['/Users/x/SRC/libzip/', to: extract_to]
|
24
|
+
end # testextracter
|
metadata
ADDED
@@ -0,0 +1,163 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: extracter
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Robert A. Heiler
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-06-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: colours
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: opn
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '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'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: remove_file_suffix
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: |2+
|
56
|
+
|
57
|
+
This fairly small class/library can be used to extract different archive
|
58
|
+
formats such as .tar.bz2 or .tbz - archives such as .gem and .lzma
|
59
|
+
will also work.
|
60
|
+
|
61
|
+
You can also extract audio, by making use of class ExtractAudio. The
|
62
|
+
latter is - and should be - optional though.
|
63
|
+
|
64
|
+
Usage example:
|
65
|
+
|
66
|
+
require 'extracter'
|
67
|
+
|
68
|
+
Extracter.new('/foo/bla-1.0.tar.bz2')
|
69
|
+
|
70
|
+
The second argument that can be passed to the method new()
|
71
|
+
specifies where we should extract to, example:
|
72
|
+
|
73
|
+
Extracter.new('/foo/bla-1.0.tar.bz2', '/opt')
|
74
|
+
|
75
|
+
This would extract to the /opt directory.
|
76
|
+
|
77
|
+
You can query whether input is an archive or not via:
|
78
|
+
|
79
|
+
Extracter.is_archive? 'foo.tar.xz'
|
80
|
+
|
81
|
+
As of April 2014 we also provide a bin/extract file, so that
|
82
|
+
you can simply extract something from the commandline.
|
83
|
+
|
84
|
+
Since as of November 2018, class Extracter can also "extract"
|
85
|
+
.iso files. (The .iso will be mounted to a directory that
|
86
|
+
will be created, actually.)
|
87
|
+
|
88
|
+
If you have a specific suggestion to make this gem more useful
|
89
|
+
for others, please drop me an email at:
|
90
|
+
|
91
|
+
shevegen@gmail.com
|
92
|
+
|
93
|
+
Thank you.
|
94
|
+
|
95
|
+
email: shevegen@gmail.com
|
96
|
+
executables: []
|
97
|
+
extensions: []
|
98
|
+
extra_rdoc_files: []
|
99
|
+
files:
|
100
|
+
- README.md
|
101
|
+
- USAGE.md
|
102
|
+
- bin/extract
|
103
|
+
- doc/README.gen
|
104
|
+
- extracter.gemspec
|
105
|
+
- lib/extracter.rb
|
106
|
+
- lib/extracter/class_methods.rb
|
107
|
+
- lib/extracter/colours.rb
|
108
|
+
- lib/extracter/constants/constants.rb
|
109
|
+
- lib/extracter/do_extract_what_to.rb
|
110
|
+
- lib/extracter/extracter.rb
|
111
|
+
- lib/extracter/help.rb
|
112
|
+
- lib/extracter/initialize.rb
|
113
|
+
- lib/extracter/misc.rb
|
114
|
+
- lib/extracter/opn.rb
|
115
|
+
- lib/extracter/reset.rb
|
116
|
+
- lib/extracter/version/version.rb
|
117
|
+
- test/testing_class_extracter.rb
|
118
|
+
homepage: http://rubygems.org/gems/extracter
|
119
|
+
licenses:
|
120
|
+
- GPL-2.0
|
121
|
+
metadata: {}
|
122
|
+
post_install_message: "\n class Extracter can be used to extract archives, such as
|
123
|
+
.tar.gz or\n .zip.\n\n If you need some help, you can invoke bin/extract via:\n\n
|
124
|
+
\ extract --help\n\n In general, the syntax for extract is kept simple. Just
|
125
|
+
pass in the\n archive that has to be extracted as the first argument to \n extract
|
126
|
+
( bin/extract) , and class Extracter will try to extract\n it, if it is a registered
|
127
|
+
archive format.\n\n In ruby code, you may be able to use class Extracter in this
|
128
|
+
manner:\n\n require 'extracter'\n Extracter[file_path_here]\n\n or\n\n
|
129
|
+
\ require 'extracter'\n Extracter.new(file_path_here)\n\n Specific example:\n\n
|
130
|
+
\ require 'extracter'\n Extracter.new('htop-2.2.0.tar.xz')\n\n See the
|
131
|
+
--help option.\n\n"
|
132
|
+
rdoc_options: []
|
133
|
+
require_paths:
|
134
|
+
- lib
|
135
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: 2.7.1
|
140
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: 3.1.4
|
145
|
+
requirements: []
|
146
|
+
rubygems_version: 3.1.4
|
147
|
+
signing_key:
|
148
|
+
specification_version: 4
|
149
|
+
summary: 'This fairly small class/library can be used to extract different archive
|
150
|
+
formats such as .tar.bz2 or .tbz - archives such as .gem and .lzma will also work. You
|
151
|
+
can also extract audio, by making use of class ExtractAudio. The latter is - and
|
152
|
+
should be - optional though. Usage example: require ''extracter'' Extracter.new(''/foo/bla-1.0.tar.bz2'') The
|
153
|
+
second argument that can be passed to the method new() specifies where we should
|
154
|
+
extract to, example: Extracter.new(''/foo/bla-1.0.tar.bz2'', ''/opt'') This would
|
155
|
+
extract to the /opt directory. You can query whether input is an archive or not
|
156
|
+
via: Extracter.is_archive? ''foo.tar.xz'' As of April 2014 we also provide a bin/extract
|
157
|
+
file, so that you can simply extract something from the commandline. Since as of
|
158
|
+
November 2018, class Extracter can also "extract" .iso files. (The .iso will be
|
159
|
+
mounted to a directory that will be created, actually.) If you have a specific
|
160
|
+
suggestion to make this gem more useful for others, please drop me an email at: shevegen@gmail.com Thank
|
161
|
+
you.'
|
162
|
+
test_files: []
|
163
|
+
...
|