Class: CommandRunner::CommandInstance

Inherits:
Object
  • Object
show all
Defined in:
lib/command_runner.rb

Instance Method Summary collapse

Constructor Details

#initialize(default_args, default_timeout, default_environment, allowed_sub_commands) ⇒ CommandInstance

Returns a new instance of CommandInstance.



151
152
153
154
155
156
157
158
159
160
# File 'lib/command_runner.rb', line 151

def initialize(default_args, default_timeout, default_environment, allowed_sub_commands)
  unless default_args.first.is_a? Array
    raise "First argument must be an array of command line args. Found #{default_args}"
  end

  @default_args = default_args
  @default_timeout = default_timeout
  @default_environment = default_environment
  @allowed_sub_commands = allowed_sub_commands
end

Instance Method Details

#run(*args, timeout: nil, environment: {}) ⇒ Object



162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
# File 'lib/command_runner.rb', line 162

def run(*args, timeout: nil, environment: {})
  args_list = *args

  if !args_list.nil? && !args_list.empty? && args_list.first.is_a?(Array)
    if args_list.length > 1
      raise "Unsupported args list length: #{args_list.length}"
    else
      args_list = args_list.first
    end
  end

  # Check sub command if needed
  if !args_list.nil? && !args_list.empty? &&
      !@allowed_sub_commands.empty? && !@allowed_sub_commands.include?(args_list.first)
    raise "Illegal sub command '#{args_list.first}'. Expected #{allowed_sub_commands} (#{allowed_sub_commands.include?(args_list.first)})"
  end

  full_args = @default_args.dup
  full_args[0] += args_list.map {|arg| arg.to_s }
  CommandRunner.run(*full_args, timeout: (timeout || @default_timeout), environment: @default_environment.merge(environment))
end