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