28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/ace/compressor/cli/commands/compress.rb', line 28
def call(**options)
if options[:version]
puts "ace-compressor #{Ace::Compressor::VERSION}"
return 0
end
sources = normalize_sources(options[:sources] || [])
if sources.empty?
raise Ace::Support::Cli::Error,
"Missing input path. Usage: ace-compressor <file-or-dir> [more-paths...] --mode <exact|compact|agent>"
end
mode = (options[:mode] || "exact").to_s
unless SUPPORTED_MODES.include?(mode)
raise Ace::Support::Cli::Error, "Unsupported mode '#{mode}'. Use --mode exact, --mode compact, or --mode agent"
end
source_scope = (options[:source_scope] || "merged").to_s
unless SUPPORTED_SOURCE_SCOPES.include?(source_scope)
raise Ace::Support::Cli::Error,
"Unsupported source scope '#{source_scope}'. Use --source-scope merged or --source-scope per-source"
end
runner = Ace::Compressor::Organisms::CompressionRunner.new(
sources,
mode: mode,
source_scope: source_scope,
output: options[:output],
format: options[:format],
verbose: !!options[:verbose]
)
result = runner.call
if options[:verbose]
result[:ignored_paths].each { |path| warn "Ignoring unsupported file: #{path}" }
end
puts result[:console_output]
if result[:exit_code].to_i.nonzero?
raise Ace::Support::Cli::Error, refusal_message_for(mode)
end
rescue Ace::Compressor::Error => e
raise Ace::Support::Cli::Error, e.message
end
|