repackage 1.0.22
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of repackage might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/bin/repackager +7 -0
- data/lib/repackage.rb +1 -0
- data/lib/repackage/constants.rb +53 -0
- data/lib/repackage/repackage.rb +471 -0
- data/lib/repackage/version/version.rb +14 -0
- data/repackage.gemspec +56 -0
- metadata +124 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ae1c42f89332705eb78bf759228acfd7e18f354c1270208d33cf73011ccf0fa2
|
4
|
+
data.tar.gz: 373166fb56529a0200500224a2f5c04e8a96cc706a00bb96ce81cc5ec01860fb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0430d13c23f9116ffcf231d818916c286f8b09d5fbf15a70c941dacac80ac08bbf7ab223140b5153bc6a63ba62f4d6312c1a735e2150564e73442550efb41cec
|
7
|
+
data.tar.gz: ba4bec93c3f897023c90022451469adf25ba706232407800abd070c73e4f8f1dc1ee283872cc54e03b05819aee75bb0efc64528ac3639eaa4792d40ebe6daabd
|
data/bin/repackager
ADDED
data/lib/repackage.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'repackage/repackage.rb'
|
@@ -0,0 +1,53 @@
|
|
1
|
+
#!/System/Index/bin/ruby -w
|
2
|
+
# Encoding: ISO-8859-1
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'repackage/constants.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
class Repackage
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === MY_TEMP
|
11
|
+
# ========================================================================= #
|
12
|
+
if ENV['MY_TEMP']
|
13
|
+
EXTRACT_TO = ENV['MY_TEMP'].to_s+'/' # Denote where to extract the stuff to.
|
14
|
+
else
|
15
|
+
EXTRACT_TO = '/tmp/'
|
16
|
+
end
|
17
|
+
|
18
|
+
# ========================================================================= #
|
19
|
+
# === SHALL_WE_DELETE_OLD_SOURCE
|
20
|
+
# ========================================================================= #
|
21
|
+
SHALL_WE_DELETE_OLD_SOURCE = true # Remove the old source.
|
22
|
+
|
23
|
+
# ========================================================================= #
|
24
|
+
# === DEFAULT_TARGET_FORMAT_TYPE
|
25
|
+
# ========================================================================= #
|
26
|
+
DEFAULT_TARGET_FORMAT_TYPE = '.tar.xz' # '.tar.bz2' # The target format comes here.
|
27
|
+
|
28
|
+
# ========================================================================= #
|
29
|
+
# === CREATE_TAR_GZ
|
30
|
+
# ========================================================================= #
|
31
|
+
CREATE_TAR_GZ = 'tar cfvz ' # Command to create .tar.gz archives
|
32
|
+
|
33
|
+
# ========================================================================= #
|
34
|
+
# === CREATE_TAR_BZ2
|
35
|
+
# ========================================================================= #
|
36
|
+
CREATE_TAR_BZ2 = 'tar cfvj ' # Command to create .tar.bz2 archives
|
37
|
+
|
38
|
+
# ========================================================================= #
|
39
|
+
# === CREATE_ZIP
|
40
|
+
# ========================================================================= #
|
41
|
+
CREATE_ZIP = 'zip -r ' # Create Zip Archive
|
42
|
+
|
43
|
+
# ========================================================================= #
|
44
|
+
# === LAST_DOWNLOADED_FILE
|
45
|
+
# ========================================================================= #
|
46
|
+
begin
|
47
|
+
require 'wget'
|
48
|
+
LAST_DOWNLOADED_FILE = Wget.download_to?
|
49
|
+
rescue LoadError
|
50
|
+
LAST_DOWNLOADED_FILE = ENV['HOME'].to_s+'/LAST_DOWNLOADED_FILE.md'
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,471 @@
|
|
1
|
+
#!/System/Index/bin/ruby -w
|
2
|
+
# Encoding: ISO-8859-1
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# === Repackage
|
6
|
+
#
|
7
|
+
# The purpose of this class is to repackage a .tar.gz file into
|
8
|
+
# a .tar.bz2 file or into another format.
|
9
|
+
#
|
10
|
+
# The default target format is to .tar.xz or more accurately, to
|
11
|
+
# whatever is in the constant DEFAULT_TARGET_FORMAT_TYPE.
|
12
|
+
# =========================================================================== #
|
13
|
+
# Changelog (no longer updated - this is now mostly a historic reference):
|
14
|
+
#
|
15
|
+
# 28.08.2005: Creation of this class.
|
16
|
+
# 19.09.2006: Added rename method, to rename a wrongly named dir.
|
17
|
+
# Also minor cleanups.
|
18
|
+
# 27.02.2008: Cleanups.
|
19
|
+
# 14.05.2010: Bugfix.
|
20
|
+
# 06.01.2012: Added ability to package into .tar.xz format.
|
21
|
+
# 26.11.2013: Turned this class into a standalone-gem.
|
22
|
+
# March 2014: We no longer attempt to repackage into the same target
|
23
|
+
# format.
|
24
|
+
#
|
25
|
+
# =========================================================================== #
|
26
|
+
# require 'repackage/repackage.rb'
|
27
|
+
# =========================================================================== #
|
28
|
+
require 'fileutils'
|
29
|
+
require 'extracter'
|
30
|
+
begin
|
31
|
+
require 'colours'
|
32
|
+
rescue LoadError; end
|
33
|
+
require 'opn'
|
34
|
+
require 'repackage/constants.rb'
|
35
|
+
require 'repackage/version/version.rb'
|
36
|
+
|
37
|
+
begin
|
38
|
+
require 'remove_file_suffix'
|
39
|
+
rescue LoadError; end
|
40
|
+
|
41
|
+
class Repackage
|
42
|
+
|
43
|
+
include Colours
|
44
|
+
|
45
|
+
begin
|
46
|
+
require 'totarxz'
|
47
|
+
rescue LoadError
|
48
|
+
puts 'totarxz is not installed - please consider installing it.'
|
49
|
+
end
|
50
|
+
|
51
|
+
# ========================================================================= #
|
52
|
+
# Constant definitions come next.
|
53
|
+
# ========================================================================= #
|
54
|
+
|
55
|
+
# ========================================================================= #
|
56
|
+
# === initialize
|
57
|
+
#
|
58
|
+
# The second argument, `optional_format_type`, specifies the
|
59
|
+
# registered target format type.
|
60
|
+
# ========================================================================= #
|
61
|
+
def initialize(
|
62
|
+
i,
|
63
|
+
optional_format_type = 'tar.xz',
|
64
|
+
optional_start_dir = nil,
|
65
|
+
optional_keep_archive = nil,
|
66
|
+
optional_run_already = false
|
67
|
+
)
|
68
|
+
register_sigint
|
69
|
+
reset
|
70
|
+
set_start_dir(optional_start_dir)
|
71
|
+
set_package_and_package_name(i)
|
72
|
+
set_target_format_type(
|
73
|
+
optional_format_type
|
74
|
+
)
|
75
|
+
consider_refusal_of_repackaging_action
|
76
|
+
determine_file_size
|
77
|
+
set_shall_we_delete_old_source(
|
78
|
+
optional_keep_archive
|
79
|
+
)
|
80
|
+
set_extract_to
|
81
|
+
if block_given?
|
82
|
+
yielded = yield
|
83
|
+
case yielded
|
84
|
+
when :run_already
|
85
|
+
optional_run_already = true
|
86
|
+
end
|
87
|
+
end
|
88
|
+
run if optional_run_already
|
89
|
+
end
|
90
|
+
|
91
|
+
# ========================================================================= #
|
92
|
+
# === reset (reset tag)
|
93
|
+
# ========================================================================= #
|
94
|
+
def reset
|
95
|
+
@file_size = 0
|
96
|
+
@package_full_name = ''.dup
|
97
|
+
set_start_dir(Dir.pwd)
|
98
|
+
end
|
99
|
+
|
100
|
+
# ========================================================================= #
|
101
|
+
# === register_sigint
|
102
|
+
# ========================================================================= #
|
103
|
+
def register_sigint
|
104
|
+
Signal.trap('SIGINT') { exit }
|
105
|
+
end
|
106
|
+
|
107
|
+
# ========================================================================= #
|
108
|
+
# === set_package_and_package_name
|
109
|
+
#
|
110
|
+
# If the input is nil, we'll randomly grab any file from the currenty
|
111
|
+
# directory.
|
112
|
+
# ========================================================================= #
|
113
|
+
def set_package_and_package_name(
|
114
|
+
i = @package
|
115
|
+
)
|
116
|
+
case i
|
117
|
+
when nil,'+'
|
118
|
+
i = Dir['*'].reject {|entry| File.directory? entry }.sample
|
119
|
+
end unless File.exist? i.to_s
|
120
|
+
set_package(i)
|
121
|
+
set_package_name
|
122
|
+
end
|
123
|
+
|
124
|
+
# ========================================================================= #
|
125
|
+
# === consider_refusal_of_repackaging_action
|
126
|
+
# ========================================================================= #
|
127
|
+
def consider_refusal_of_repackaging_action
|
128
|
+
if @package.include? @target_format_type
|
129
|
+
opn
|
130
|
+
e "We can not repackage #{simp(@package)}"\
|
131
|
+
" into the same target archive format ("\
|
132
|
+
"#{sfancy(@target_format_type)})."
|
133
|
+
exit
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
# ========================================================================= #
|
138
|
+
# === set_target_format_type
|
139
|
+
#
|
140
|
+
# We will repackage to this format here.
|
141
|
+
# ========================================================================= #
|
142
|
+
def set_target_format_type(
|
143
|
+
i = '.tar.xz'
|
144
|
+
)
|
145
|
+
i = i.downcase if i # Only want it downcase.
|
146
|
+
case i # case tag
|
147
|
+
# ======================================================================= #
|
148
|
+
# === .tar.xz
|
149
|
+
# ======================================================================= #
|
150
|
+
when 'xz','tar.xz'
|
151
|
+
i = '.tar.xz'
|
152
|
+
# ======================================================================= #
|
153
|
+
# === .tar.bz2
|
154
|
+
# ======================================================================= #
|
155
|
+
when 'bz2','.tar.bz2'
|
156
|
+
i = '.tar.bz2'
|
157
|
+
# ======================================================================= #
|
158
|
+
# === .tar.gz
|
159
|
+
# ======================================================================= #
|
160
|
+
when 'targz','gz','tar.gz'
|
161
|
+
i = '.tar.gz'
|
162
|
+
# ======================================================================= #
|
163
|
+
# === nil
|
164
|
+
# ======================================================================= #
|
165
|
+
when nil # Assume a default here.
|
166
|
+
i = DEFAULT_TARGET_FORMAT_TYPE
|
167
|
+
else
|
168
|
+
# warn 'Did not find registered format type.'
|
169
|
+
end
|
170
|
+
@target_format_type = i
|
171
|
+
end; alias format= set_target_format_type # === format=
|
172
|
+
|
173
|
+
# ========================================================================= #
|
174
|
+
# === determine_file_size
|
175
|
+
# ========================================================================= #
|
176
|
+
def determine_file_size
|
177
|
+
if File.exist? @package
|
178
|
+
@file_size = File.stat(@package).size? # Obtain some information.
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
# ========================================================================= #
|
183
|
+
# === set_start_dir
|
184
|
+
# ========================================================================= #
|
185
|
+
def set_start_dir(i = Dir.pwd)
|
186
|
+
i = Dir.pwd if i.nil?
|
187
|
+
i = Dir.pwd if i.to_s == 'def'
|
188
|
+
i << '/' unless i.end_with? '/' # Append a / properly.
|
189
|
+
@start_dir = i if i
|
190
|
+
end
|
191
|
+
|
192
|
+
# ========================================================================= #
|
193
|
+
# === set_shall_we_delete_old_source
|
194
|
+
# ========================================================================= #
|
195
|
+
def set_shall_we_delete_old_source(i = SHALL_WE_DELETE_OLD_SOURCE)
|
196
|
+
i = SHALL_WE_DELETE_OLD_SOURCE if i.nil?
|
197
|
+
@shall_we_delete_old_source = i
|
198
|
+
end
|
199
|
+
|
200
|
+
# ========================================================================= #
|
201
|
+
# === set_package_name
|
202
|
+
# ========================================================================= #
|
203
|
+
def set_package_name(i = @package) # We store the name of the package WITHOUT extension here.
|
204
|
+
i = i.to_s
|
205
|
+
i = File.basename(i) if i.include? '/'
|
206
|
+
@package_name = remove_extension(i)
|
207
|
+
end
|
208
|
+
|
209
|
+
# ========================================================================= #
|
210
|
+
# === set_extract_to
|
211
|
+
#
|
212
|
+
# Set the @extract_to variable here.
|
213
|
+
# ========================================================================= #
|
214
|
+
def set_extract_to(i = EXTRACT_TO)
|
215
|
+
i = EXTRACT_TO if i.nil?
|
216
|
+
i = i.to_s.dup
|
217
|
+
i = '/tmp/' if i.empty? # Hardcoded in this case.
|
218
|
+
i << '/' unless i.end_with? '/' # A directory has a trailing /.
|
219
|
+
@extract_to = i
|
220
|
+
end
|
221
|
+
|
222
|
+
# ========================================================================= #
|
223
|
+
# === extract (extract tag)
|
224
|
+
#
|
225
|
+
# Extract it here. Before we do so, though, we must check if the target
|
226
|
+
# does not exist yet.
|
227
|
+
# ========================================================================= #
|
228
|
+
def extract(what = @package)
|
229
|
+
remove_extracted_data
|
230
|
+
Extracter.extract_what_to(what, @extract_to)
|
231
|
+
end
|
232
|
+
|
233
|
+
# ========================================================================= #
|
234
|
+
# === change_dir_to (cd tag)
|
235
|
+
# ========================================================================= #
|
236
|
+
def change_dir_to(
|
237
|
+
where_to = @extract_to
|
238
|
+
)
|
239
|
+
Dir.chdir(where_to)
|
240
|
+
end; alias cd change_dir_to # === cd
|
241
|
+
|
242
|
+
# ======================================================================= #
|
243
|
+
# === file_name
|
244
|
+
# ======================================================================= #
|
245
|
+
def file_name # This method returns the filename.
|
246
|
+
return File.basename(__FILE__)+': '
|
247
|
+
end
|
248
|
+
|
249
|
+
# ======================================================================= #
|
250
|
+
# === cliner
|
251
|
+
# ======================================================================= #
|
252
|
+
def cliner
|
253
|
+
e ('=' * 80)
|
254
|
+
end
|
255
|
+
|
256
|
+
# ========================================================================= #
|
257
|
+
# === check_if_this_target_exists_or_not
|
258
|
+
# ========================================================================= #
|
259
|
+
def check_if_this_target_exists_or_not(i = @package) # If it does not exist, we exit here.
|
260
|
+
cliner
|
261
|
+
if File.exist? i
|
262
|
+
e "Good, the File `#{sfile(i)}` exists. We will try"
|
263
|
+
e 'to repackage it into `'+simportant(@target_format_type)+'` format type.'
|
264
|
+
e 'We will extract into the directory '+sdir(@extract_to)+'.'
|
265
|
+
set_package_and_package_name(i)
|
266
|
+
else # Ok, file does not exist. Let's check if we have a number:
|
267
|
+
if i =~ /^\d$/ # If input is a (positional) number like "3"
|
268
|
+
_ = Dir['*'].sort[ (i.to_i - 1) ]
|
269
|
+
set_package_and_package_name _
|
270
|
+
check_if_this_target_exists_or_not # @package
|
271
|
+
else
|
272
|
+
# Try a glob first before giving up.
|
273
|
+
_ = try_glob(i)
|
274
|
+
if _.empty?
|
275
|
+
warn_about_missing_file_then_exit
|
276
|
+
else
|
277
|
+
check_if_this_target_exists_or_not(_.first)
|
278
|
+
end
|
279
|
+
end
|
280
|
+
end
|
281
|
+
cliner
|
282
|
+
end; alias check_if_target_exists_or_not check_if_this_target_exists_or_not # === check_if_target_exists_or_not
|
283
|
+
|
284
|
+
# ========================================================================= #
|
285
|
+
# === try_glob
|
286
|
+
#
|
287
|
+
# Try a glob with this method.
|
288
|
+
# ========================================================================= #
|
289
|
+
def try_glob(i)
|
290
|
+
return Dir[i+'*']
|
291
|
+
end
|
292
|
+
|
293
|
+
# ========================================================================= #
|
294
|
+
# === move_package_to (move tag)
|
295
|
+
#
|
296
|
+
# Use this method to move a package to a new location.
|
297
|
+
# ========================================================================= #
|
298
|
+
def move_package_to(
|
299
|
+
where_to = @start_dir
|
300
|
+
)
|
301
|
+
if File.exist? @package_full_name
|
302
|
+
e 'Moving the package at '+sfile(@package_full_name)+
|
303
|
+
' to '+sfile(where_to)+' next.'
|
304
|
+
FileUtils.mv(@package_full_name, where_to)
|
305
|
+
else
|
306
|
+
e 'No file at '+sfile(@package_full_name)+' exists, thus we '\
|
307
|
+
'can not move anything.'
|
308
|
+
end
|
309
|
+
end
|
310
|
+
|
311
|
+
# ========================================================================= #
|
312
|
+
# === remove_old_package
|
313
|
+
#
|
314
|
+
# Only call this when we are sure to remove the old source. I recommend
|
315
|
+
# to delete the old source. Of course we must make sure to delete the
|
316
|
+
# right package.
|
317
|
+
# ========================================================================= #
|
318
|
+
def remove_old_package
|
319
|
+
e "Removing the old package `#{sfile(@package)}` next."
|
320
|
+
remove(@package)
|
321
|
+
end
|
322
|
+
|
323
|
+
# ========================================================================= #
|
324
|
+
# === remove
|
325
|
+
#
|
326
|
+
# Remove a file or a directory with this method.
|
327
|
+
# ========================================================================= #
|
328
|
+
def remove(i)
|
329
|
+
if File.directory?(i)
|
330
|
+
FileUtils.rm_rf(i) unless i.strip == '/'
|
331
|
+
elsif File.file?(i)
|
332
|
+
File.delete(i)
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
336
|
+
# ========================================================================= #
|
337
|
+
# === target_format?
|
338
|
+
# ========================================================================= #
|
339
|
+
def target_format?
|
340
|
+
@target_format_type
|
341
|
+
end
|
342
|
+
|
343
|
+
# ========================================================================= #
|
344
|
+
# === remove_extracted_data
|
345
|
+
# ========================================================================= #
|
346
|
+
def remove_extracted_data # remove the extracted archive again.
|
347
|
+
_ = "#{@extract_to}/#{remove_extension(@package)}"
|
348
|
+
remove(_) if File.exist? _ # We remove a possibly-existing, extracted directory first.
|
349
|
+
end
|
350
|
+
|
351
|
+
# ========================================================================= #
|
352
|
+
# === run_sys_cmd
|
353
|
+
# ========================================================================= #
|
354
|
+
def run_sys_cmd(_)
|
355
|
+
e _; `#{_}`
|
356
|
+
end
|
357
|
+
|
358
|
+
# ========================================================================= #
|
359
|
+
# === remove_extension
|
360
|
+
# ========================================================================= #
|
361
|
+
def remove_extension(i) # This will remove all extensions.
|
362
|
+
return RemoveFileSuffix[i]
|
363
|
+
end
|
364
|
+
|
365
|
+
# ========================================================================= #
|
366
|
+
# === extract_to?
|
367
|
+
#
|
368
|
+
# Defaults to /Depot/Temp.
|
369
|
+
# ========================================================================= #
|
370
|
+
def extract_to?
|
371
|
+
@extract_to
|
372
|
+
end; alias extract_to extract_to? # === extract_to
|
373
|
+
|
374
|
+
# ========================================================================= #
|
375
|
+
# === warn_about_missing_file_then_exit
|
376
|
+
# ========================================================================= #
|
377
|
+
def warn_about_missing_file_then_exit
|
378
|
+
e swarn(file_name+'The file `'+sfile(@package))+swarn('` does not exist.')
|
379
|
+
raise 'File does not exist. Can not continue.' # also send a specific error here.
|
380
|
+
end
|
381
|
+
|
382
|
+
# ========================================================================= #
|
383
|
+
# === set_packages
|
384
|
+
# ========================================================================= #
|
385
|
+
def set_package(i) # Use this method to set @package.
|
386
|
+
# i = Dir.pwd+'/'+i unless i.include? '/'
|
387
|
+
if i.nil? # Since May 2013 we try to fetch a random file from a list.
|
388
|
+
_ = Dir['*'].reject {|entry| File.directory? entry}
|
389
|
+
i = _.first if _.size == 1 # if we only have one entry, continue here.
|
390
|
+
end
|
391
|
+
case i
|
392
|
+
when 'LAST','LAST_DOWNLOADED','--last','last','-l'
|
393
|
+
i = File.readlines(LAST_DOWNLOADED_FILE).first
|
394
|
+
# ===================================================================== #
|
395
|
+
# The format of the file has changed a bit. We have to check
|
396
|
+
# whether it includes a '#' character. If so then we discard
|
397
|
+
# all that comes after said '#' token.
|
398
|
+
# ===================================================================== #
|
399
|
+
if i.include? '#'
|
400
|
+
i = i[0..(i.index('#')-1)].strip
|
401
|
+
end
|
402
|
+
end
|
403
|
+
@package = i
|
404
|
+
end
|
405
|
+
|
406
|
+
# ========================================================================= #
|
407
|
+
# === package_this_directory
|
408
|
+
#
|
409
|
+
# This will also set @package_full_name.
|
410
|
+
# ========================================================================= #
|
411
|
+
def package_this_directory(d) # The input is the file name.
|
412
|
+
if File.exist? d # This checks in TEMP_DIR.
|
413
|
+
@package_full_name = d+@target_format_type # Assign to @package_full_name.
|
414
|
+
case @target_format_type # Now act on @target_format_type.
|
415
|
+
when 'xz','.tar.xz'
|
416
|
+
ToTarXz.new(d)
|
417
|
+
when '.tar.bz2','tar.bz2','tarbz2','totarbz2','tbz2'
|
418
|
+
run_sys_cmd CREATE_TAR_BZ2+@package_full_name+' '+d
|
419
|
+
else
|
420
|
+
e file_name+swarn('Not found a registered action for `')+
|
421
|
+
simp(@target_format_type)+swarn('`!')
|
422
|
+
end
|
423
|
+
# tar cfvj #{@this_directory}.tar.bz2 #{@this_directory}"
|
424
|
+
else
|
425
|
+
opn
|
426
|
+
e swarn 'But no file called `'+
|
427
|
+
sfile(d)+swarn('` exists in `')+
|
428
|
+
sdir(Dir.pwd)+swarn('`.')
|
429
|
+
end
|
430
|
+
end
|
431
|
+
|
432
|
+
# ========================================================================= #
|
433
|
+
# === repackage_data
|
434
|
+
#
|
435
|
+
# Bundled the methods together. Main powerhorse method. Call it when
|
436
|
+
# you are ready to go.
|
437
|
+
# ========================================================================= #
|
438
|
+
def repackage_data
|
439
|
+
check_if_this_target_exists_or_not
|
440
|
+
extract
|
441
|
+
cd @extract_to # Ideally, we should not change directory ever.
|
442
|
+
package_this_directory @package_name
|
443
|
+
move_package_to(@start_dir)
|
444
|
+
cd @start_dir
|
445
|
+
if @shall_we_delete_old_source
|
446
|
+
remove_old_package
|
447
|
+
remove_extracted_data
|
448
|
+
end
|
449
|
+
end
|
450
|
+
|
451
|
+
# ========================================================================= #
|
452
|
+
# === run (run tag)
|
453
|
+
# ========================================================================= #
|
454
|
+
def run
|
455
|
+
repackage_data
|
456
|
+
end
|
457
|
+
|
458
|
+
end
|
459
|
+
|
460
|
+
if __FILE__ == $PROGRAM_NAME
|
461
|
+
_ = Repackage.new(ARGV[0], ARGV[1], :def, ARGV[2])
|
462
|
+
_.run
|
463
|
+
end
|
464
|
+
# =========================================================================== #
|
465
|
+
# Usage examples with full syntax:
|
466
|
+
# rer filename.tar.gz format_type
|
467
|
+
# rer xpdf-3.00.tar.gz gzip
|
468
|
+
# rer AUD_MusicBox-020.tgz
|
469
|
+
# rer AUD_MusicBox-020.tgz
|
470
|
+
# rer
|
471
|
+
# =========================================================================== #
|
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/System/Index/bin/ruby -w
|
2
|
+
# Encoding: ISO-8859-1
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'repackage/version/version.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
class Repackage
|
8
|
+
|
9
|
+
# =========================================================================== #
|
10
|
+
# === VERSION
|
11
|
+
# =========================================================================== #
|
12
|
+
VERSION = '1.0.22'
|
13
|
+
|
14
|
+
end
|
data/repackage.gemspec
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# =========================================================================== #
|
2
|
+
# Gemspec for Project Repackage.
|
3
|
+
# =========================================================================== #
|
4
|
+
require 'repackage/version/version.rb'
|
5
|
+
|
6
|
+
Gem::Specification.new { |s|
|
7
|
+
|
8
|
+
s.name = 'repackage'
|
9
|
+
s.version = Repackage::VERSION
|
10
|
+
s.date = Time.now.strftime('%Y-%m-%d')
|
11
|
+
|
12
|
+
s.summary = <<-EOF
|
13
|
+
|
14
|
+
This library is called repackage. It allows you to
|
15
|
+
repackage an archive, i.e. .tar.gz to .tar.xz format.
|
16
|
+
|
17
|
+
If the target (the input you give to this class) can
|
18
|
+
not be found, we will try a glob before giving up
|
19
|
+
first, since version 1.0.2.
|
20
|
+
|
21
|
+
If you have specific suggestions to make this gem more
|
22
|
+
useful for others, please drop me an email at:
|
23
|
+
|
24
|
+
shevegen@gmail.com
|
25
|
+
|
26
|
+
Thank you.
|
27
|
+
|
28
|
+
EOF
|
29
|
+
|
30
|
+
s.description = <<-EOF
|
31
|
+
|
32
|
+
This library is called repackage. It allows you to
|
33
|
+
repackage an archive, i.e. .tar.gz to .tar.xz format.
|
34
|
+
|
35
|
+
EOF
|
36
|
+
|
37
|
+
s.extra_rdoc_files = %w()
|
38
|
+
|
39
|
+
s.authors = ['Robert A. Heiler']
|
40
|
+
s.email = 'shevegen@gmail.com'
|
41
|
+
s.files = Dir['**/*']
|
42
|
+
s.license = 'GPL-2.0'
|
43
|
+
s.homepage = 'http://rubygems.org/gems/repackage'
|
44
|
+
s.executables = Dir['bin/*'].map { |f| File.basename(f) }
|
45
|
+
|
46
|
+
s.required_ruby_version = '>= '+RUBY_VERSION
|
47
|
+
s.required_rubygems_version = '>= '+Gem::VERSION
|
48
|
+
s.rubygems_version = '>= '+Gem::VERSION
|
49
|
+
|
50
|
+
s.add_dependency 'colours'
|
51
|
+
s.add_dependency 'extracter'
|
52
|
+
s.add_dependency 'opn'
|
53
|
+
s.add_dependency 'remove_file_suffix'
|
54
|
+
s.add_dependency 'totarxz'
|
55
|
+
|
56
|
+
}
|
metadata
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: repackage
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.22
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Robert A. Heiler
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-05-03 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: extracter
|
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: opn
|
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
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: remove_file_suffix
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: totarxz
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: "\nThis library is called repackage. It allows you to \nrepackage an
|
84
|
+
archive, i.e. .tar.gz to .tar.xz format.\n\n"
|
85
|
+
email: shevegen@gmail.com
|
86
|
+
executables:
|
87
|
+
- repackager
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- bin/repackager
|
92
|
+
- lib/repackage.rb
|
93
|
+
- lib/repackage/constants.rb
|
94
|
+
- lib/repackage/repackage.rb
|
95
|
+
- lib/repackage/version/version.rb
|
96
|
+
- repackage.gemspec
|
97
|
+
homepage: http://rubygems.org/gems/repackage
|
98
|
+
licenses:
|
99
|
+
- GPL-2.0
|
100
|
+
metadata: {}
|
101
|
+
post_install_message:
|
102
|
+
rdoc_options: []
|
103
|
+
require_paths:
|
104
|
+
- lib
|
105
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 2.6.3
|
110
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: 3.0.3
|
115
|
+
requirements: []
|
116
|
+
rubygems_version: 3.0.3
|
117
|
+
signing_key:
|
118
|
+
specification_version: 4
|
119
|
+
summary: 'This library is called repackage. It allows you to repackage an archive,
|
120
|
+
i.e. .tar.gz to .tar.xz format. If the target (the input you give to this class)
|
121
|
+
can not be found, we will try a glob before giving up first, since version 1.0.2. If
|
122
|
+
you have specific suggestions to make this gem more useful for others, please drop
|
123
|
+
me an email at: shevegen@gmail.com Thank you.'
|
124
|
+
test_files: []
|