Class: Omnizip::Cli
- Inherits:
-
Thor
show all
- Includes:
- Shared
- Defined in:
- lib/omnizip/cli.rb,
lib/omnizip/cli/shared.rb
Overview
Command-line interface for Omnizip.
Provides Thor-based CLI commands for compressing and decompressing
files using various compression algorithms.
Defined Under Namespace
Modules: Shared
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Shared
#format_bytes, #handle_error
Class Method Details
.exit_on_failure? ⇒ Boolean
304
305
306
|
# File 'lib/omnizip/cli.rb', line 304
def exit_on_failure?
true
end
|
Instance Method Details
#compress(input, output) ⇒ Object
#convert(source, target) ⇒ Object
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
|
# File 'lib/omnizip/cli.rb', line 454
def convert(source, target)
puts "Converting #{source} to #{target}..." if options[:verbose]
result = Omnizip::Converter.convert(
source,
target,
compression: options[:compression]&.to_sym,
compression_level: options[:level],
filter: options[:filter]&.to_sym,
solid: options[:solid],
preserve_metadata: options[:preserve_metadata],
delete_source: options[:delete_source],
)
puts "Conversion complete!"
puts "Source: #{result.source_path} (#{format_bytes(result.source_size)})"
puts "Target: #{result.target_path} (#{format_bytes(result.target_size)})"
puts "Size change: #{result.size_reduction.round(1)}%"
puts "Duration: #{result.duration.round(2)}s"
puts "Entries: #{result.entry_count}"
if result.warnings?
puts "\nWarnings:"
result.warnings.each { |w| puts " - #{w}" }
end
rescue StandardError => e
handle_error(e)
end
|
#decompress(input, output) ⇒ Object
#list ⇒ Object
404
405
406
407
408
|
# File 'lib/omnizip/cli.rb', line 404
def list
Commands::ListCommand.new(options).run
rescue StandardError => e
handle_error(e)
end
|
#version ⇒ Object
411
412
413
414
|
# File 'lib/omnizip/cli.rb', line 411
def version
puts "Omnizip v#{Omnizip::VERSION}"
puts "Pure Ruby implementation of LZMA compression"
end
|