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