mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-13 23:01:30 +00:00
Update command handler to use actual real arguments
This commit is contained in:
parent
2ab0ce19a7
commit
4b69f56a65
@ -38,10 +38,6 @@ namespace EQEmuCommand {
|
|||||||
void DisplayDebug(argh::parser &cmd)
|
void DisplayDebug(argh::parser &cmd)
|
||||||
{
|
{
|
||||||
if (cmd[{"-d", "--debug"}]) {
|
if (cmd[{"-d", "--debug"}]) {
|
||||||
std::cout << "Positional args:\n";
|
|
||||||
for (auto &pos_arg : cmd)
|
|
||||||
std::cout << '\t' << pos_arg << std::endl;
|
|
||||||
|
|
||||||
std::cout << "Positional args:\n";
|
std::cout << "Positional args:\n";
|
||||||
for (auto &pos_arg : cmd.pos_args())
|
for (auto &pos_arg : cmd.pos_args())
|
||||||
std::cout << '\t' << pos_arg << std::endl;
|
std::cout << '\t' << pos_arg << std::endl;
|
||||||
@ -73,16 +69,18 @@ namespace EQEmuCommand {
|
|||||||
{
|
{
|
||||||
bool arguments_filled = true;
|
bool arguments_filled = true;
|
||||||
|
|
||||||
|
int index = 2;
|
||||||
for (auto &arg : arguments) {
|
for (auto &arg : arguments) {
|
||||||
if (cmd(arg).str().empty()) {
|
if (cmd(arg).str().empty() && cmd(index).str().empty()) {
|
||||||
arguments_filled = false;
|
arguments_filled = false;
|
||||||
}
|
}
|
||||||
|
index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!arguments_filled || argc == 2) {
|
if (!arguments_filled || argc == 2) {
|
||||||
std::string arguments_string;
|
std::string arguments_string;
|
||||||
for (auto &arg : arguments) {
|
for (auto &arg : arguments) {
|
||||||
arguments_string += " " + arg + "=*\n";
|
arguments_string += " " + arg;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string options_string;
|
std::string options_string;
|
||||||
@ -90,8 +88,12 @@ namespace EQEmuCommand {
|
|||||||
options_string += " " + opt + "\n";
|
options_string += " " + opt + "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::stringstream str;
|
||||||
|
str << termcolor::yellow << "\nCommand" << termcolor::reset << "\n\n";
|
||||||
|
|
||||||
std::cout << fmt::format(
|
std::cout << fmt::format(
|
||||||
"Command\n\n{0} \n\nArgs\n{1}\nOptions\n{2}",
|
"{0}{1}{2}\n\nOptions\n{3}",
|
||||||
|
str.str(),
|
||||||
argv[1],
|
argv[1],
|
||||||
arguments_string,
|
arguments_string,
|
||||||
options_string
|
options_string
|
||||||
|
|||||||
@ -293,6 +293,37 @@ bool Database::SetAccountStatus(const char* name, int16 status) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param account_name
|
||||||
|
* @param status
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
bool Database::SetAccountStatus(const std::string& account_name, int16 status)
|
||||||
|
{
|
||||||
|
LogInfo("Account [{}] is attempting to be set to status [{}]", account_name, status);
|
||||||
|
|
||||||
|
std::string query = fmt::format(
|
||||||
|
SQL(
|
||||||
|
UPDATE account SET status = {} WHERE name = '{}'
|
||||||
|
),
|
||||||
|
status,
|
||||||
|
account_name
|
||||||
|
);
|
||||||
|
|
||||||
|
auto results = QueryDatabase(query);
|
||||||
|
|
||||||
|
if (!results.Success()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (results.RowsAffected() == 0) {
|
||||||
|
LogWarning("Account [{}] does not exist!", account_name);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/* This initially creates the character during character create */
|
/* This initially creates the character during character create */
|
||||||
bool Database::ReserveName(uint32 account_id, char* name) {
|
bool Database::ReserveName(uint32 account_id, char* name) {
|
||||||
std::string query = StringFormat("SELECT `account_id`, `name` FROM `character_data` WHERE `name` = '%s'", name);
|
std::string query = StringFormat("SELECT `account_id`, `name` FROM `character_data` WHERE `name` = '%s'", name);
|
||||||
|
|||||||
@ -179,6 +179,7 @@ public:
|
|||||||
bool DeleteAccount(const char *name, const char* loginserver);
|
bool DeleteAccount(const char *name, const char* loginserver);
|
||||||
bool GetLiveChar(uint32 account_id, char* cname);
|
bool GetLiveChar(uint32 account_id, char* cname);
|
||||||
bool SetAccountStatus(const char* name, int16 status);
|
bool SetAccountStatus(const char* name, int16 status);
|
||||||
|
bool SetAccountStatus(const std::string& account_name, int16 status);
|
||||||
bool SetLocalPassword(uint32 accid, const char* password);
|
bool SetLocalPassword(uint32 accid, const char* password);
|
||||||
bool UpdateLiveChar(char* charname, uint32 account_id);
|
bool UpdateLiveChar(char* charname, uint32 account_id);
|
||||||
|
|
||||||
|
|||||||
@ -22,6 +22,7 @@
|
|||||||
#include "../common/eqemu_logsys.h"
|
#include "../common/eqemu_logsys.h"
|
||||||
#include "../common/json/json.h"
|
#include "../common/json/json.h"
|
||||||
#include "../common/version.h"
|
#include "../common/version.h"
|
||||||
|
#include "worlddb.h"
|
||||||
|
|
||||||
namespace WorldserverCommandHandler {
|
namespace WorldserverCommandHandler {
|
||||||
|
|
||||||
@ -45,38 +46,12 @@ namespace WorldserverCommandHandler {
|
|||||||
/**
|
/**
|
||||||
* Register commands
|
* Register commands
|
||||||
*/
|
*/
|
||||||
function_map["test:hello-world"] = &WorldserverCommandHandler::HelloWorld;
|
|
||||||
function_map["database:version"] = &WorldserverCommandHandler::DatabaseVersion;
|
function_map["database:version"] = &WorldserverCommandHandler::DatabaseVersion;
|
||||||
|
function_map["database:set-account-status"] = &WorldserverCommandHandler::DatabaseSetAccountStatus;
|
||||||
|
|
||||||
EQEmuCommand::HandleMenu(function_map, cmd, argc, argv);
|
EQEmuCommand::HandleMenu(function_map, cmd, argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param argc
|
|
||||||
* @param argv
|
|
||||||
* @param cmd
|
|
||||||
* @param description
|
|
||||||
*/
|
|
||||||
void HelloWorld(int argc, char **argv, argh::parser &cmd, std::string &description)
|
|
||||||
{
|
|
||||||
description = "Test command";
|
|
||||||
|
|
||||||
if (cmd[{"-h", "--help"}]) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<std::string> arguments = {};
|
|
||||||
std::vector<std::string> options = {
|
|
||||||
"--hello",
|
|
||||||
"--write"
|
|
||||||
};
|
|
||||||
|
|
||||||
EQEmuCommand::ValidateCmdInput(arguments, options, cmd, argc, argv);
|
|
||||||
|
|
||||||
LogInfo("hello world!");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param argc
|
* @param argc
|
||||||
* @param argv
|
* @param argv
|
||||||
@ -102,4 +77,33 @@ namespace WorldserverCommandHandler {
|
|||||||
std::cout << payload.str() << std::endl;
|
std::cout << payload.str() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param argc
|
||||||
|
* @param argv
|
||||||
|
* @param cmd
|
||||||
|
* @param description
|
||||||
|
*/
|
||||||
|
void DatabaseSetAccountStatus(int argc, char **argv, argh::parser &cmd, std::string &description)
|
||||||
|
{
|
||||||
|
description = "Sets account status by account name";
|
||||||
|
|
||||||
|
std::vector<std::string> arguments = {
|
||||||
|
"{name}",
|
||||||
|
"{status}"
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<std::string> options = {};
|
||||||
|
|
||||||
|
if (cmd[{"-h", "--help"}]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
EQEmuCommand::ValidateCmdInput(arguments, options, cmd, argc, argv);
|
||||||
|
|
||||||
|
database.SetAccountStatus(
|
||||||
|
cmd(2).str(),
|
||||||
|
std::stoi(cmd(3).str())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -26,8 +26,8 @@
|
|||||||
|
|
||||||
namespace WorldserverCommandHandler {
|
namespace WorldserverCommandHandler {
|
||||||
void CommandHandler(int argc, char **argv);
|
void CommandHandler(int argc, char **argv);
|
||||||
void HelloWorld(int argc, char **argv, argh::parser &cmd, std::string &description);
|
|
||||||
void DatabaseVersion(int argc, char **argv, argh::parser &cmd, std::string &description);
|
void DatabaseVersion(int argc, char **argv, argh::parser &cmd, std::string &description);
|
||||||
|
void DatabaseSetAccountStatus(int argc, char **argv, argh::parser &cmd, std::string &description);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user