repackage 1.0.30 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,759 +2,80 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
- # === Repackage
5
+ # === Repackage::Repackage
6
6
  #
7
- # The purpose of this class is to repackage a .tar.gz file into
8
- # a .tar.bz2 file or into another format. Thus, the ideal input
9
- # are files such as "foobar-1.2.3.tar.gz" or something similar
10
- # to this.
7
+ # The primary purpose of this class is to repackage a .tar.gz archive into
8
+ # a .tar.bz2 file or into another format.
11
9
  #
12
- # The default target format is to .tar.xz or more accurately,
13
- # to whatever value is specified via the constant
10
+ # Thus, the ideal input to this class are files such as "foobar-1.2.3.tar.gz"
11
+ # or something similar to this. These will be stored as an Array internally,
12
+ # to allow batch-processing from the get go.
13
+ #
14
+ # The default target format is to .tar.xz or more accurately, to whatever
15
+ # the value is that has been specified via the constant
14
16
  # DEFAULT_TARGET_FORMAT_TYPE.
15
17
  #
16
18
  # Historically this class was first created at the end of August 2005,
17
- # so it used to be a fairly "old" class. Over the years it has been
18
- # extended to allow for more flexibility. In June 2021 it was re-written
19
- # from scratch, primarily to make use of @internal_hash rather than a
20
- # multitude of different instance variables; this coincided with
21
- # making this functionality available via sinatra as well.
19
+ # so it used to be a fairly "old" class. Obviously its use case was
20
+ # necessary even a long time ago as-is.
21
+ #
22
+ # Over the years the class has been extended to allow for more
23
+ # flexibility. In June 2021 it was re-written from scratch, primarily
24
+ # to make use of @internal_hash rather than a multitude of different
25
+ # instance variables; this coincided with making this functionality
26
+ # available via sinatra as well, thus allowing web-related use.
27
+ #
28
+ # In May 2022 the main class has again been rewritten. It was made
29
+ # more logical, made most of its external gems optional (including
30
+ # colour support) and more extensively documented - at the least
31
+ # compared to the pre-2022 state.
22
32
  #
23
33
  # Usage example:
24
34
  #
25
- # Repackage.new(ARGV)
35
+ # Repackage::Repackage.new(ARGV)
36
+ # Repackage.new(ARGV) # or this shorter variant.
26
37
  #
27
38
  # =========================================================================== #
28
39
  # require 'repackage/class/repackage.rb'
29
40
  # =========================================================================== #
30
- class Repackage
31
-
32
- require 'fileutils'
33
- require 'repackage/version/version.rb'
41
+ module Repackage
34
42
 
35
- require 'esystem/method'
43
+ class Repackage # === Repackage::Repackage
36
44
 
37
- require 'remove_file_suffix'
38
- require 'totarxz'
45
+ alias e puts
39
46
 
40
- begin
41
- require 'colours'
42
- include Colours
43
- rescue LoadError; end
47
+ require 'extracter' # This external gem is mandatory - no need to begin/rescue it.
48
+ require 'fileutils'
49
+ require 'repackage/colours/colours.rb'
50
+ require 'repackage/class/constants.rb'
51
+ require 'repackage/class/misc.rb'
52
+ require 'repackage/version/version.rb'
44
53
 
45
54
  begin
46
55
  require 'opn'
47
56
  rescue LoadError; end
48
57
 
49
- begin
50
- require 'extracter'
51
- rescue LoadError; end
52
-
53
- # ========================================================================= #
54
- # === NAMESPACE
55
- # ========================================================================= #
56
- NAMESPACE = inspect
57
-
58
- # ========================================================================= #
59
- # === LAST_DOWNLOADED_FILE
60
- # ========================================================================= #
61
- begin
62
- require 'wget'
63
- LAST_DOWNLOADED_FILE = Wget.download_to?
64
- rescue LoadError
65
- LAST_DOWNLOADED_FILE = ENV['HOME'].to_s+'/LAST_DOWNLOADED_FILE.md'
66
- end
67
-
68
- # ========================================================================= #
69
- # === DEFAULT_TARGET_FORMAT_TYPE
70
- #
71
- # The target format comes here.
72
- # ========================================================================= #
73
- DEFAULT_TARGET_FORMAT_TYPE = '.tar.xz' # '.tar.bz2'
74
-
75
- # ========================================================================= #
76
- # === MY_TEMP
77
- # ========================================================================= #
78
- if ENV['MY_TEMP']
79
- EXTRACT_TO = ENV['MY_TEMP'].to_s+'/' # Denote where to extract the stuff to.
80
- else
81
- EXTRACT_TO = '/tmp/'
82
- end
83
-
84
- # ========================================================================= #
85
- # === CREATE_TAR_XZ
86
- #
87
- # This is the command that is used when a .tar.xz file is to be created.
88
- # ========================================================================= #
89
- CREATE_TAR_XZ = 'tar -vcJf'
90
-
91
- # ========================================================================= #
92
- # === CREATE_TAR_GZ
93
- #
94
- # Command to create a .tar.gz archive.
95
- # ========================================================================= #
96
- CREATE_TAR_GZ = 'tar cfvz'
97
-
98
- # ========================================================================= #
99
- # === CREATE_TAR_BZ2
100
- #
101
- # Command to create a .tar.bz2 archive.
102
- # ========================================================================= #
103
- CREATE_TAR_BZ2 = 'tar cfvj'
104
-
105
- # ========================================================================= #
106
- # === CREATE_ZIP
107
- #
108
- # Command to create a .zip archive.
109
- # ========================================================================= #
110
- CREATE_ZIP = 'zip -r '
111
-
112
- # ========================================================================= #
113
- # === SHALL_WE_DELETE_THE_OLD_ARCHIVE
114
- #
115
- # Remove the old source if this constant is true. Since as of June 2021
116
- # this defaults to false, except in certain conditions met on my home
117
- # setup.
118
- # ========================================================================= #
119
- SHALL_WE_DELETE_THE_OLD_ARCHIVE = false
120
-
121
- # ========================================================================= #
122
- # === initialize
123
- #
124
- # The first argument given to this class must be the name of (or path
125
- # to) a locally existing file, such as "foobar-1.0.tar.gz".
126
- # ========================================================================= #
127
- def initialize(
128
- commandline_arguments = nil,
129
- run_already = true
130
- )
131
- register_sigint
132
- reset
133
- set_commandline_arguments(
134
- commandline_arguments
135
- )
136
- # ========================================================================= #
137
- # === Handle given blocks next
138
- # ========================================================================= #
139
- if block_given?
140
- yielded = yield
141
- case yielded
142
- # ===================================================================== #
143
- # === :do_not_delete_the_old_source
144
- # ===================================================================== #
145
- when :do_not_delete_the_old_source
146
- set_shall_we_delete_old_source(false)
147
- # ===================================================================== #
148
- # === :run_already
149
- # ===================================================================== #
150
- when :run_already
151
- run_already = true
152
- end
153
- end
154
- run if run_already
155
- end
156
-
157
- # ========================================================================= #
158
- # === reset (reset tag)
159
- # ========================================================================= #
160
- def reset
161
- # ========================================================================= #
162
- # === @internal_hash
163
- # ========================================================================= #
164
- @internal_hash = {}
165
- set_start_dir
166
- # ========================================================================= #
167
- # === :repackage_to_this_format
168
- # ========================================================================= #
169
- set_repackage_to_this_format(DEFAULT_TARGET_FORMAT_TYPE)
170
- # ========================================================================= #
171
- # === :the_new_file_is_at
172
- #
173
- # This entry will keep track at which new location the file can be
174
- # found.
175
- # ========================================================================= #
176
- @internal_hash[:the_new_file_is_at] = nil
177
- # ========================================================================= #
178
- # === :file_size
179
- # ========================================================================= #
180
- @internal_hash[:file_size] = 0
181
- set_shall_we_delete_the_old_archive(:default)
182
- set_extract_to(:default)
183
- end
184
-
185
- # ========================================================================= #
186
- # === determine_file_size
187
- # ========================================================================= #
188
- def determine_file_size(
189
- i = filename?
190
- )
191
- if i and File.exist?(i)
192
- @internal_hash[:file_size] = File.stat(i).size? # Obtain some information.
193
- end
194
- end
195
-
196
- # ========================================================================= #
197
- # === shall_we_delete_the_old_archive?
198
- # ========================================================================= #
199
- def shall_we_delete_the_old_archive?
200
- @internal_hash[:shall_we_delete_the_old_archive]
201
- end
202
-
203
- # ========================================================================= #
204
- # === set_repackage_to_this_format
205
- #
206
- # We will repackage to this format here.
207
- # ========================================================================= #
208
- def set_repackage_to_this_format(
209
- i = DEFAULT_TARGET_FORMAT_TYPE
210
- )
211
- i = i.downcase if i # Only want it downcased.
212
- case i # case tag
213
- # ========================================================================= #
214
- # === .tar.xz
215
- # ========================================================================= #
216
- when 'xz',
217
- 'tar.xz'
218
- i = '.tar.xz'
219
- # ========================================================================= #
220
- # === .tar.bz2
221
- # ========================================================================= #
222
- when 'bz2',
223
- '.tar.bz2'
224
- i = '.tar.bz2'
225
- # ========================================================================= #
226
- # === .tar.gz
227
- # ========================================================================= #
228
- when 'targz',
229
- 'gz',
230
- 'tar.gz'
231
- i = '.tar.gz'
232
- # ========================================================================= #
233
- # === nil
234
- # ========================================================================= #
235
- when nil # Assume a default here.
236
- i = DEFAULT_TARGET_FORMAT_TYPE
237
- else # else tag
238
- # warn 'Did not find registered format type.'
239
- end
240
- @internal_hash[:repackage_to_this_format] = i
241
- end; alias set_target_format_type set_repackage_to_this_format # === set_target_format_type
242
- alias format= set_repackage_to_this_format # === format=
243
-
244
- # ========================================================================= #
245
- # === repackage_to_which_format?
246
- # ========================================================================= #
247
- def repackage_to_which_format?
248
- @internal_hash[:repackage_to_this_format]
249
- end; alias format? repackage_to_which_format? # === format?
250
- alias target_format? repackage_to_which_format? # === target_format?
251
- alias target_format_type? repackage_to_which_format? # === target_format_type?
252
-
253
- # ========================================================================= #
254
- # === return_pwd
255
- # ========================================================================= #
256
- def return_pwd
257
- "#{Dir.pwd}/".squeeze('/')
258
- end
259
-
260
- # ========================================================================= #
261
- # === register_sigint
262
- # ========================================================================= #
263
- def register_sigint
264
- Signal.trap('SIGINT') { exit }
265
- end
266
-
267
- # ========================================================================= #
268
- # === set_commandline_arguments
269
- # ========================================================================= #
270
- def set_commandline_arguments(i = '')
271
- i = [i].flatten.compact
272
- @commandline_arguments = i
273
- end
274
-
275
- # ========================================================================= #
276
- # === commandline_arguments?
277
- # ========================================================================= #
278
- def commandline_arguments?
279
- @commandline_arguments
280
- end
281
-
282
- # ========================================================================= #
283
- # === first_argument?
284
- # ========================================================================= #
285
- def first_argument?
286
- @commandline_arguments.first
287
- end; alias first? first_argument? # === first?
288
-
289
- # ========================================================================= #
290
- # === determine_relevant_entries
291
- # ========================================================================= #
292
- def determine_relevant_entries
293
- set_repackage_this_file(first?)
294
- second_argument = @commandline_arguments[1]
295
- if second_argument
296
- # ===================================================================== #
297
- # Let the user determine the format type:
298
- # ===================================================================== #
299
- set_target_format_type(
300
- second_argument
301
- )
302
- end
303
- end
304
-
305
- # ========================================================================= #
306
- # === real_file_name
307
- #
308
- # This method will return the filename of this class.
309
- # ========================================================================= #
310
- def real_file_name
311
- return File.basename(__FILE__)+': '
312
- end
313
-
314
- # ========================================================================= #
315
- # === remove
316
- #
317
- # Remove a file or a directory with this method.
318
- # ========================================================================= #
319
- def remove(i)
320
- if File.directory?(i)
321
- FileUtils.rm_rf(i) unless i.strip == '/'
322
- elsif File.file?(i)
323
- File.delete(i)
324
- end
325
- end
326
-
327
- # ========================================================================= #
328
- # === cliner
329
- # ========================================================================= #
330
- def cliner
331
- e ('=' * 80)
332
- end
333
-
334
- # ========================================================================= #
335
- # === set_extract_to
336
- #
337
- # Set the @extract_to variable here.
338
- # ========================================================================= #
339
- def set_extract_to(i = EXTRACT_TO)
340
- case i
341
- when nil, :default
342
- i = EXTRACT_TO
343
- end
344
- i = i.to_s.dup
345
- i = '/tmp/' if i.empty? # Hardcoded in this case.
346
- i << '/' unless i.end_with? '/' # A directory has a trailing /.
347
- @internal_hash[:extract_to] = i
348
- end
349
-
350
- # ========================================================================= #
351
- # === extract_to?
352
- #
353
- # Defaults to /home/Temp/ on my home system.
354
- # ========================================================================= #
355
- def extract_to?
356
- @internal_hash[:extract_to]
357
- end; alias extract_to extract_to? # === extract_to
358
-
359
- # ========================================================================= #
360
- # === set_repackage_this_file
361
- # ========================================================================= #
362
- def set_repackage_this_file(i = first?)
363
- if i.is_a? Array
364
- i = i.first
365
- end
366
- case i
367
- when nil
368
- # ===================================================================== #
369
- # Since as of May 2013 we try to fetch a random file from a list.
370
- # ===================================================================== #
371
- _ = Dir['*'].reject {|entry| File.directory? entry}
372
- i = _.first if _.size == 1 # if we only have one entry, continue here.
373
- # ========================================================================= #
374
- # === --last
375
- # ========================================================================= #
376
- when 'LAST','LAST_DOWNLOADED',
377
- /^-?-?last/i,
378
- '-l'
379
- i = File.readlines(LAST_DOWNLOADED_FILE).first
380
- # ===================================================================== #
381
- # The format of the file has changed a bit. We have to check
382
- # whether it includes a '#' character. If so then we discard
383
- # all that comes after said '#' token.
384
- # ===================================================================== #
385
- if i.include? '#'
386
- i = i[0..(i.index('#')-1)].strip
387
- end
388
- end
389
- i = i.to_s.dup
390
- if File.directory?(i) and !i.end_with?('/')
391
- i << '/'
392
- end
393
- if i.nil? or i.empty?
394
- raise 'Please provide a valid archive to repackage.'
395
- end
396
- determine_file_size if File.exist? i
397
- @internal_hash[:repackage_this_file] = i
398
- # ========================================================================= #
399
- # === :original_directory_where_the_archive_was_kept
400
- #
401
- # This variant will always refer to the directory where the archive
402
- # is situated in.
403
- # ========================================================================= #
404
- @internal_hash[:original_directory_where_the_archive_was_kept] = rds(
405
- File.absolute_path(
406
- File.dirname(i)
407
- )+'/'
408
- )
409
- end; alias set_package set_repackage_this_file # === set_package
410
-
411
- # ========================================================================= #
412
- # === rds
413
- # ========================================================================= #
414
- def rds(i)
415
- i.squeeze '/'
416
- end
417
-
418
- # ========================================================================= #
419
- # === change_dir_to (cd tag)
420
- # ========================================================================= #
421
- def change_dir_to(
422
- where_to = extract_to?
423
- )
424
- Dir.chdir(where_to)
425
- end; alias cd change_dir_to # === cd
426
-
427
- # ========================================================================= #
428
- # === is_on_roebe?
429
58
  # ========================================================================= #
430
- def is_on_roebe?
431
- ENV['IS_ROEBE'].to_s == '1'
432
- end
433
-
59
+ # === Repackage::Repackage[]
434
60
  # ========================================================================= #
435
- # === set_start_dir
436
- # ========================================================================= #
437
- def set_start_dir(
438
- i = return_pwd
439
- )
440
- @internal_hash[:start_dir] = i
441
- end
442
-
443
- # ========================================================================= #
444
- # === remove_archive_from
445
- # ========================================================================= #
446
- def remove_archive_from(i)
447
- i.delete_suffix('.xz').
448
- delete_suffix('.gz').
449
- delete_suffix('.bz2').
450
- delete_suffix('.zip').
451
- delete_suffix('.tar')
452
- end; alias remove_extension remove_archive_from # === remove_extensions
453
-
454
- # ========================================================================= #
455
- # === set_the_new_file_is_at
456
- # ========================================================================= #
457
- def set_the_new_file_is_at(i)
458
- @internal_hash[:the_new_file_is_at] = i
459
- end; alias set_final_location set_the_new_file_is_at # === set_final_location
460
-
461
- # ========================================================================= #
462
- # === the_final_location_is_at?
463
- # ========================================================================= #
464
- def the_final_location_is_at?
465
- @internal_hash[:the_new_file_is_at]
466
- end; alias the_new_file_is_at? the_final_location_is_at? # === the_new_file_is_at?
467
- alias the_file_is_where? the_final_location_is_at? # === the_file_is_where?
468
-
469
- # ========================================================================= #
470
- # === remove_extracted_data
471
- # ========================================================================= #
472
- def remove_extracted_data # remove the extracted archive again.
473
- _ = "#{extract_to?}/#{remove_extension(filename?)}"
474
- remove(_) if File.exist? _ # We remove a possibly-existing, extracted directory first.
475
- end
476
-
477
- # ========================================================================= #
478
- # === internal_hash?
479
- # ========================================================================= #
480
- def internal_hash?
481
- @internal_hash
482
- end; alias hash? internal_hash? # === hash?
483
-
484
- # ========================================================================= #
485
- # === create_archive_from_this_directory (create tag)
486
- # ========================================================================= #
487
- def create_archive_from_this_directory(
488
- this_directory,
489
- repackage_to_this_format = repackage_to_which_format?
490
- )
491
- esystem "#{CREATE_TAR_XZ} #{this_directory}#{repackage_to_this_format} #{File.basename(this_directory)}"
492
- end; alias package_this_directory create_archive_from_this_directory # === package_this_directory
493
-
494
- # ========================================================================= #
495
- # === Repackage.repackage
496
- # ========================================================================= #
497
- def self.repackage(this)
61
+ def self.[](this = ARGV)
498
62
  new(this)
499
- end; self.instance_eval { alias [] repackage } # === Repackage[]
63
+ end; self.instance_eval { alias repackage [] } # === Repackage::Repackage[]
500
64
 
501
- # ========================================================================= #
502
- # === package_full_name?
503
- # ========================================================================= #
504
- def package_full_name?(
505
- i = repackage_which_file?
506
- )
507
- File.absolute_path(i)
508
- end
509
-
510
- # ========================================================================= #
511
- # === repackage_which_file?
512
- # ========================================================================= #
513
- def repackage_which_file?
514
- @internal_hash[:repackage_this_file]
515
- end; alias filename? repackage_which_file? # === filename?
516
-
517
- # ========================================================================= #
518
- # === move_this_package_to (move tag)
519
- #
520
- # Use this method to move a package to a new location.
521
- # ========================================================================= #
522
- def move_this_package_to(
523
- new_location = the_file_is_where?,
524
- where_to = start_dir?
525
- )
526
- package_full_name = File.absolute_path(new_location)
527
- if File.exist? package_full_name
528
- opn; e 'Moving the package at '+sfile(package_full_name)+
529
- ' to '+sfile(where_to)+' next.'
530
- FileUtils.mv(package_full_name, where_to)
531
- set_final_location(where_to)
532
- else
533
- e 'No file at '+sfile(package_full_name)+' exists, thus '\
534
- 'we can not move anything.'
535
- end
536
- end
537
-
538
- # ========================================================================= #
539
- # === start_dir?
540
- # ========================================================================= #
541
- def start_dir?
542
- @internal_hash[:start_dir]
543
- end
544
-
545
- # ========================================================================= #
546
- # === cd_to_the_extract_to_directory_then_set_it_as_the_start_dir
547
- # ========================================================================= #
548
- def cd_to_the_extract_to_directory_then_set_it_as_the_start_dir
549
- cd EXTRACT_TO
550
- set_start_dir EXTRACT_TO
551
- end
552
-
553
- # ========================================================================= #
554
- # === consider_refusing_the_repackaging_action
555
- #
556
- # This method acts as a tiny "safeguard", so we don't repackage when
557
- # the target format is the same as the original archive format.
558
- # ========================================================================= #
559
- def consider_refusing_the_repackaging_action(
560
- i = repackage_which_file?
561
- )
562
- target_format_type = target_format_type?
563
- if i.include? target_format_type
564
- opn; e "We can not repackage #{simp(i)} into the"
565
- opn; e "same target archive format (#{sfancy(target_format_type)})."
566
- exit
567
- end
568
- end
569
-
570
- # ========================================================================= #
571
- # === try_glob
572
- #
573
- # Try a glob with this method.
574
- # ========================================================================= #
575
- def try_glob(i)
576
- return Dir[i+'*']
577
- end
578
-
579
- # ========================================================================= #
580
- # === dir_where_the_archive_resides?
581
- # ========================================================================= #
582
- def dir_where_the_archive_resides?
583
- @internal_hash[:original_directory_where_the_archive_was_kept]
584
- end
585
-
586
- # ========================================================================= #
587
- # === extract (extract tag)
588
- #
589
- # Extract it here. Before we do so, though, we must check if the target
590
- # does not exist yet.
591
- # ========================================================================= #
592
- def extract(
593
- what = filename?
594
- )
595
- if what.frozen?
596
- what = what.dup
597
- end
598
- unless what.include? '/'
599
- what = dir_where_the_archive_resides?+File.basename(what)
600
- end
601
- remove_extracted_data
602
- Extracter.extract_what_to(what, extract_to?)
603
- end
604
-
605
- # ========================================================================= #
606
- # === warn_about_missing_file_then_exit
607
- # ========================================================================= #
608
- def warn_about_missing_file_then_exit(
609
- i = target_file?
610
- )
611
- opn;e swarn('The file `')+
612
- sfile(i)+
613
- swarn('` does not exist.')
614
- raise "The argument must be an existing (local) file. As "\
615
- "the file does not exist, this class can not continue."
616
- end
617
-
618
- # ========================================================================= #
619
- # === check_whether_the_archive_exists
620
- # ========================================================================= #
621
- def check_whether_the_archive_exists(
622
- _ = dir_where_the_archive_resides?+repackage_which_file?
623
- )
624
- cliner
625
- if File.file? _
626
- opn; e "Good, the file `#{sfile(_)}` exists."
627
- opn; e 'We will try to repackage it into `'+
628
- simportant(target_format_type?)+'` format type.'
629
- opn; e 'We will extract into the directory '+sdir(extract_to?)+'.'
630
- else
631
- # ===================================================================== #
632
- # Ok - in this case the file does not exist. We will first try
633
- # to check if we have a number as input; if so we then we may
634
- # try a glob-action. And if not, we will raise an error.
635
- # ===================================================================== #
636
- if first? and (first? =~ /^\d$/) # If input is a (positional) number like "3"
637
- _ = Dir['*'].sort[first?.to_i - 1]
638
- set_repackage_this_file(_)
639
- else
640
- # =================================================================== #
641
- # Try a glob first before giving up.
642
- # =================================================================== #
643
- _ = try_glob(first?) if first?
644
- if _.empty?
645
- warn_about_missing_file_then_exit
646
- else
647
- check_if_this_target_exists_or_not(_.first)
648
- end
649
- end
650
- end
651
- cliner
652
- end; alias check_if_this_target_exists_or_not check_whether_the_archive_exists # === check_if_this_target_exists_or_not
653
- alias check_if_target_exists_or_not check_whether_the_archive_exists # === check_if_target_exists_or_not
654
-
655
- # ========================================================================= #
656
- # === do_repackage_everything
657
- #
658
- # This is the main workforce of this class, the "powerhorse method".
659
- #
660
- # Call it when you are ready to go and wish to re-package a given
661
- # archive.
662
- # ========================================================================= #
663
- def do_repackage_everything
664
- check_whether_the_archive_exists
665
- consider_refusing_the_repackaging_action
666
- target_file = repackage_which_file?
667
- # ======================================================================= #
668
- # Next extract this file:
669
- # ======================================================================= #
670
- extract(target_file)
671
- # ======================================================================= #
672
- # Now we have to repackage the extracted directory:
673
- # ======================================================================= #
674
- repackage_to_this_format = repackage_to_which_format?
675
- _ = extract_to?+remove_archive_from(File.basename(target_file))
676
- cd extract_to? # Ideally, we should not change directory ever.
677
- case repackage_to_this_format # case tag
678
- when '.tar.xz',
679
- 'xz',
680
- '.tar.bz2',
681
- 'tar.bz2',
682
- 'tarbz2',
683
- 'totarbz2',
684
- 'tbz2',
685
- 'zip'
686
- if File.directory? _
687
- create_archive_from_this_directory(_, repackage_to_this_format)
688
- end
689
- new_location = _+repackage_to_this_format
690
- if File.exist? new_location
691
- set_the_new_file_is_at(new_location)
692
- cd @internal_hash[:original_directory_where_the_archive_was_kept]
693
- move_this_package_to(
694
- new_location,
695
- @internal_hash[:original_directory_where_the_archive_was_kept]
696
- )
697
- cd start_dir?
698
- if shall_we_delete_the_old_archive?
699
- remove_the_old_archive
700
- remove_extracted_data
701
- end
702
- end
703
- else
704
- e tomato('Unhandled format type: ')+
705
- steelblue(repackage_to_this_format)
706
- end
707
- end; alias repackage_data do_repackage_everything # === repackage_data
708
-
709
- # ========================================================================= #
710
- # === set_shall_we_delete_the_old_archive
711
- # ========================================================================= #
712
- def set_shall_we_delete_the_old_archive(
713
- i = :default
714
- )
715
- case i
716
- # ======================================================================= #
717
- # === :default
718
- # ======================================================================= #
719
- when :default,
720
- nil
721
- i = SHALL_WE_DELETE_THE_OLD_ARCHIVE
722
- if is_on_roebe?
723
- i = true
724
- end
725
- end
726
- @internal_hash[:shall_we_delete_the_old_archive] = i
727
- end; alias set_shall_we_delete_old_source set_shall_we_delete_the_old_archive # === set_shall_we_delete_old_source
728
-
729
- # ========================================================================= #
730
- # === remove_the_old_archive
731
- #
732
- # Only call this when we are sure to remove the old source. I recommend
733
- # to delete the old source. Of course we must make sure to delete the
734
- # right package.
735
- # ========================================================================= #
736
- def remove_the_old_archive(
737
- i = dir_where_the_archive_resides?+filename?
738
- )
739
- opn; e "Removing the old archive at #{sfile(i)} next, as requested."
740
- remove(i)
741
- end
65
+ end
742
66
 
743
- # ========================================================================= #
744
- # === run (run tag)
745
- # ========================================================================= #
746
- def run
747
- determine_relevant_entries
748
- cd_to_the_extract_to_directory_then_set_it_as_the_start_dir
749
- opn; e 'Working from the directory '+sdir(start_dir?)+'.'
750
- do_repackage_everything
751
- end
67
+ # =========================================================================== #
68
+ # === Repackage.new
69
+ # =========================================================================== #
70
+ def self.new(i = ARGV)
71
+ ::Repackage::Repackage.new(i)
72
+ end; self.instance_eval { alias repackage new } # === Repackage.repackage
752
73
 
753
74
  end
754
75
 
755
76
  if __FILE__ == $PROGRAM_NAME
756
77
  Repackage.new(ARGV)
757
- end
78
+ end # repackage_class
758
79
  # =========================================================================== #
759
80
  # Usage examples with full syntax:
760
81
  #