lib/ass_launcher/support/shell.rb in ass_launcher-0.1.1.alpha vs lib/ass_launcher/support/shell.rb in ass_launcher-0.2.0
- old
+ new
@@ -29,11 +29,11 @@
yield(config)
end
# Configuration for {AssLauncher}
class Configuration
- attr_accessor :logger
+ attr_reader :logger
def initialize
@logger = Loggining.default_logger
end
@@ -111,21 +111,46 @@
# @option options [Boolean] :capture_assout capture assoutput.
# Default true
# @option options [Boolean]:silent_mode run 1C with
# /DisableStartupDialogs and /DisableStartupMessages parameters.
# Default true
+ # @raise [ArgumentError] when +capture_assout: true+ and +args+
+ # include +/OUT+ parameter
def initialize(cmd, args = [], options = {})
@options = DEFAULT_OPTIONS.merge(options).freeze
@cmd = cmd
@args = args
+ validate_args
@args += _silent_mode
@ass_out_file = _ass_out_file
end
+ def validate_args
+ fail ArgumentError,
+ 'Duplicate of /OUT parameter.'\
+ ' Delete /OUT from args or set option capture_assout: false' if\
+ duplicate_param_out?
+ end
+ private :validate_args
+
+ def duplicate_param_out?
+ capture_assout? && args_include?(%r{\A\/OUT\z}i)
+ end
+ private :duplicate_param_out?
+
+ def args_include?(regex)
+ args.grep(regex).size > 0
+ end
+ private :args_include?
+
+ def capture_assout?
+ options[:capture_assout]
+ end
+
# @return [true] if command was already running
def running?
- ! process_holder.nil?
+ !process_holder.nil?
end
# Run command
# @param options [Hash] options for Process.spawn
# @return [ProcessHolder]
@@ -149,11 +174,11 @@
out_file
end
private :_out_ass_argument
def _ass_out_file
- if options[:capture_assout]
+ if capture_assout?
out_file = AssOutFile.new(options[:assout_encoding])
_out_ass_argument out_file
else
StringIO.new
end
@@ -278,11 +303,11 @@
# @api private
class RunAssResult
class UnexpectedAssOut < StandardError; end
class RunAssError < StandardError; end
attr_reader :out, :assout, :exitstatus, :err
- attr_accessor :expected_assout
+ attr_reader :expected_assout
def initialize(exitstatus, out, err, assout)
@err = err
@out = out
@exitstatus = exitstatus
@assout = assout
@@ -297,12 +322,14 @@
fail UnexpectedAssOut, cut_assout unless expected_assout?
fail RunAssError, "#{err}#{cut_assout}" unless success?
self
end
+ CUT_ASSOUT_LENGTH = 640
+
def cut_assout
- return assout if assout.size <= 80
- "#{assout[0, 80]}..."
+ return assout if assout.size <= CUT_ASSOUT_LENGTH
+ "#{assout[0, CUT_ASSOUT_LENGTH].strip}..."
end
private :cut_assout
# @api public
def success?