class Arkrb::OutputParsing

Public Instance Methods

backup(output) click to toggle source

@return [True, Exception]

# File lib/arkrb/output_parsing.rb, line 97
def backup(output)
  if output =~ /Created Backup/im
    console_response = output.split("\n").map {|x| x.gsub(/\e\[([;\d]+)?m/, '').strip}
    dir_path = console_response.find {|x| x =~ /Saved arks directory is/im}.split('directory is').last.strip
    file_name = console_response.find {|x| x =~ /Created Backup/im}.split(':').last.strip
    {
        status: 'success',
        path: File.join(dir_path, file_name)
    }
  else
    raise_unknown_error(__method__.to_sym, output)
  end
end
broadcast(output) click to toggle source

@return [True, Exception]

# File lib/arkrb/output_parsing.rb, line 166
def broadcast(output)
  if output =~ /command processed/im
    true
  else
    raise_unknown_error(__method__.to_sym, output.gsub("\r", "\n"))
  end
end
check_update(output) click to toggle source
# File lib/arkrb/output_parsing.rb, line 179
def check_update(output)
  outputs = output.gsub(/\e\[([;\d]+)?m/, '').strip.split("\n")
  current_version = outputs.find {|x| x =~ /Current version/im }.split(':').last.strip
  available_version = outputs.find {|x| x =~ /Available version/im }.split(':').last.strip
  {
      current: current_version,
      available: available_version,
      update_available: current_version != available_version
  }
end
disable_mod(output) click to toggle source

@return [True, Exception]

# File lib/arkrb/output_parsing.rb, line 130
def disable_mod(output)
  if output =~ /disablemod/im
    true
  else
    raise_unknown_error(__method__.to_sym, output)
  end
end
enable_mod(output) click to toggle source

@return [True, Exception]

# File lib/arkrb/output_parsing.rb, line 121
def enable_mod(output)
  if output =~ /enable mod/im
    true
  else
    raise_unknown_error(__method__.to_sym, output)
  end
end
install(output) click to toggle source
# File lib/arkrb/output_parsing.rb, line 13
def install(output)
  if output.strip.empty?
    true
  else
    if output =~ /#{'server already running'}/im
      raise Arkrb::Error::ServerAlreadyRunning, output
    else
      raise_unknown_error(:install, output)
    end
  end
end
install_mod(output) click to toggle source

@return [True, Exception]

# File lib/arkrb/output_parsing.rb, line 139
def install_mod(output)
  if output =~ /mod [0-9]+ installed/im
    true
  else
    raise_unknown_error(__method__.to_sym, output.gsub("\r", "\n"))
  end
end
rconcmd(output) click to toggle source

@return [Object]

# File lib/arkrb/output_parsing.rb, line 175
def rconcmd(output)
  output
end
reinstall_mod(output) click to toggle source

@return [True, Exception]

# File lib/arkrb/output_parsing.rb, line 157
def reinstall_mod(output)
  if output =~ /mod [0-9]+ installed/im
    true
  else
    raise_unknown_error(__method__.to_sym, output.gsub("\r", "\n"))
  end
end
restart(output) click to toggle source

@return [True, Exception]

# File lib/arkrb/output_parsing.rb, line 52
def restart(output)
  if output =~ /#{'the server is now running'}/im
    true
  else
    raise_unknown_error(__method__.to_sym, output)
  end
end
sanitize!(command, output) click to toggle source
# File lib/arkrb/output_parsing.rb, line 4
def sanitize!(command, output)
  if public_methods(false).include?(command.to_sym)
    method(command.to_sym).call(output)
  else
    raise Arkrb::Error::SanitizationUnsupportedForThisMethod, "\n#{output}"
  end
end
save_world(output) click to toggle source

@return [True, Exception]

# File lib/arkrb/output_parsing.rb, line 112
def save_world(output)
  if output =~ /world saved/im
    true
  else
    raise_unknown_error(__method__.to_sym, output)
  end
end
start(output) click to toggle source

@return [True, Exception]

# File lib/arkrb/output_parsing.rb, line 26
def start(output)
  if output =~ /#{'the server is now running'}/im
    true
  else
    if output =~ /#{'server already running'}/im
      raise Arkrb::Error::ServerAlreadyRunning, output
    else
      raise_unknown_error(:start, output)
    end
  end
end
status(output) click to toggle source
# File lib/arkrb/output_parsing.rb, line 60
def status(output)
  status_items = {}
  defaults = {
      running: nil, pid: nil, listening: nil, name: nil,
      players: nil, active_players: nil, online: nil,
      arkservers_link: nil, build_id: nil, version: nil
  }

  status = output.gsub(/\e\[([;\d]+)?m/, '')
  if status =~ /Server running/im
    status = status.split("\n").map {|s| s.strip}
    status.shift
    status.each do |item|
      item_info = item.split(':', 2)
      status_items[item_info.first.gsub('Server ', '').strip.downcase.tr(' ', '_').to_sym] = item_info[1].strip
    end
    status_items[:running] = (status_items.fetch(:running, 'no') =~ /yes/im) ? true : false
    status_items[:listening] = (status_items.fetch(:listening, 'no') =~ /yes/im) ? true : false
    status_items[:online] = (status_items.fetch(:online, 'no') =~ /yes/im) ? true : false
    defaults.merge(status_items)
  else
    raise_unknown_error(__method__.to_sym, output)
  end
end
stop(output) click to toggle source

@return [True, Exception]

# File lib/arkrb/output_parsing.rb, line 39
def stop(output)
  if output =~ /#{'The server has been stopped'}/im
    true
  else
    if output =~ /#{'The server is already stopped'}/im
      raise Arkrb::Error::ServerAlreadyStopped, output
    else
      raise_unknown_error(__method__.to_sym, output)
    end
  end
end
uninstall_mod(output) click to toggle source

@return [True, Exception]

# File lib/arkrb/output_parsing.rb, line 148
def uninstall_mod(output)
  if output =~ /uninstallmod/im
    true
  else
    raise_unknown_error(__method__.to_sym, output)
  end
end
update(output) click to toggle source

@return [True, Exception]

# File lib/arkrb/output_parsing.rb, line 86
def update(output)
  if output =~ /#{'already up to date'}/im || output =~ /#{'updated'}/im
    # output
    true
  else
    raise_unknown_error(__method__.to_sym, output)
  end
end

Private Instance Methods

raise_unknown_error(command, output) click to toggle source

@return [Boolean] def mod_updates_available?(output)

output

end

# File lib/arkrb/output_parsing.rb, line 202
def raise_unknown_error(command, output)
  error_message = format("An unknown error has occurred while attempting to run command %s\n%s", command, output)
  raise Arkrb::Error::UnknownError, error_message
end