mirror of
https://github.com/BeamMP/BeamMP-Server.git
synced 2026-04-21 15:40:33 +00:00
add git hash to version print on startup
this helps us debug issues
This commit is contained in:
@@ -4,6 +4,24 @@ cmake_minimum_required(VERSION 3.4 FATAL_ERROR)
|
|||||||
message(STATUS "You can find build instructions and a list of dependencies in the README at \
|
message(STATUS "You can find build instructions and a list of dependencies in the README at \
|
||||||
https://github.com/BeamMP/BeamMP-Server")
|
https://github.com/BeamMP/BeamMP-Server")
|
||||||
|
|
||||||
|
include(FetchContent)
|
||||||
|
FetchContent_Declare(
|
||||||
|
cmake-tools
|
||||||
|
GIT_REPOSITORY https://github.com/brobeson/cmake-tools.git
|
||||||
|
GIT_TAG main
|
||||||
|
)
|
||||||
|
FetchContent_MakeAvailable(cmake-tools)
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${cmake-tools_SOURCE_DIR}")
|
||||||
|
|
||||||
|
include(CMakeToolsVersionFromGit)
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND git log -1 --format=%h
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
||||||
|
OUTPUT_VARIABLE GIT_HASH
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
)
|
||||||
|
|
||||||
project(BeamMP-Server
|
project(BeamMP-Server
|
||||||
DESCRIPTION "Server for BeamMP - The Multiplayer Mod for BeamNG.drive"
|
DESCRIPTION "Server for BeamMP - The Multiplayer Mod for BeamNG.drive"
|
||||||
HOMEPAGE_URL https://beammp.com
|
HOMEPAGE_URL https://beammp.com
|
||||||
@@ -25,7 +43,6 @@ if(GIT_SUBMODULE)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
set(HTTPLIB_REQUIRE_OPENSSL ON)
|
set(HTTPLIB_REQUIRE_OPENSSL ON)
|
||||||
set(SENTRY_BUILD_SHARED_LIBS OFF)
|
set(SENTRY_BUILD_SHARED_LIBS OFF)
|
||||||
|
|
||||||
@@ -139,6 +156,7 @@ set(BeamMP_Includes
|
|||||||
|
|
||||||
set(BeamMP_Definitions
|
set(BeamMP_Definitions
|
||||||
SECRET_SENTRY_URL="${BEAMMP_SECRET_SENTRY_URL}"
|
SECRET_SENTRY_URL="${BEAMMP_SECRET_SENTRY_URL}"
|
||||||
|
BEAMMP_GIT_HASH="${GIT_HASH}"
|
||||||
)
|
)
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ void ArgsParser::Parse(const std::vector<std::string_view>& ArgList) {
|
|||||||
ConsumeLongFlag(std::string(Arg));
|
ConsumeLongFlag(std::string(Arg));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
beammp_errorf("Error parsing commandline arguments: Supplied argument '{}' is not a valid argument and was ignored.", Arg);
|
fmt::print(stderr, "Error parsing commandline arguments: Supplied argument '{}' is not a valid argument and was ignored.", Arg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -22,17 +22,17 @@ bool ArgsParser::Verify() {
|
|||||||
bool Ok = true;
|
bool Ok = true;
|
||||||
for (const auto& RegisteredArg : mRegisteredArguments) {
|
for (const auto& RegisteredArg : mRegisteredArguments) {
|
||||||
if (RegisteredArg.Flags & Flags::REQUIRED && !FoundArgument(RegisteredArg.Names)) {
|
if (RegisteredArg.Flags & Flags::REQUIRED && !FoundArgument(RegisteredArg.Names)) {
|
||||||
beammp_errorf("Error in commandline arguments: Argument '{}' is required but wasn't found.", RegisteredArg.Names.at(0));
|
fmt::print(stderr, "Error in commandline arguments: Argument '{}' is required but wasn't found.", RegisteredArg.Names.at(0));
|
||||||
Ok = false;
|
Ok = false;
|
||||||
continue;
|
continue;
|
||||||
} else if (FoundArgument(RegisteredArg.Names)) {
|
} else if (FoundArgument(RegisteredArg.Names)) {
|
||||||
if (RegisteredArg.Flags & Flags::HAS_VALUE) {
|
if (RegisteredArg.Flags & Flags::HAS_VALUE) {
|
||||||
if (!GetValueOfArgument(RegisteredArg.Names).has_value()) {
|
if (!GetValueOfArgument(RegisteredArg.Names).has_value()) {
|
||||||
beammp_error("Error in commandline arguments: Argument '" + std::string(RegisteredArg.Names.at(0)) + "' expects a value, but no value was given.");
|
fmt::print(stderr, "Error in commandline arguments: Argument '" + std::string(RegisteredArg.Names.at(0)) + "' expects a value, but no value was given.");
|
||||||
Ok = false;
|
Ok = false;
|
||||||
}
|
}
|
||||||
} else if (GetValueOfArgument(RegisteredArg.Names).has_value()) {
|
} else if (GetValueOfArgument(RegisteredArg.Names).has_value()) {
|
||||||
beammp_error("Error in commandline arguments: Argument '" + std::string(RegisteredArg.Names.at(0)) + "' does not expect a value, but one was given.");
|
fmt::print(stderr, "Error in commandline arguments: Argument '" + std::string(RegisteredArg.Names.at(0)) + "' does not expect a value, but one was given.");
|
||||||
Ok = false;
|
Ok = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -81,7 +81,7 @@ void ArgsParser::ConsumeLongAssignment(const std::string& Arg) {
|
|||||||
auto Value = Arg.substr(Arg.rfind("=") + 1);
|
auto Value = Arg.substr(Arg.rfind("=") + 1);
|
||||||
auto Name = Arg.substr(2, Arg.rfind("=") - 2);
|
auto Name = Arg.substr(2, Arg.rfind("=") - 2);
|
||||||
if (!IsRegistered(Name)) {
|
if (!IsRegistered(Name)) {
|
||||||
beammp_warn("Argument '" + Name + "' was supplied but isn't a known argument, so it is likely being ignored.");
|
fmt::print(stdout, "Argument '" + Name + "' was supplied but isn't a known argument, so it is likely being ignored.");
|
||||||
}
|
}
|
||||||
mFoundArgs.push_back({ Name, Value });
|
mFoundArgs.push_back({ Name, Value });
|
||||||
}
|
}
|
||||||
@@ -90,7 +90,7 @@ void ArgsParser::ConsumeLongFlag(const std::string& Arg) {
|
|||||||
auto Name = Arg.substr(2, Arg.rfind("=") - 2);
|
auto Name = Arg.substr(2, Arg.rfind("=") - 2);
|
||||||
mFoundArgs.push_back({ Name, std::nullopt });
|
mFoundArgs.push_back({ Name, std::nullopt });
|
||||||
if (!IsRegistered(Name)) {
|
if (!IsRegistered(Name)) {
|
||||||
beammp_warn("Argument '" + Name + "' was supplied but isn't a known argument, so it is likely being ignored.");
|
fmt::print(stdout, "Argument '" + Name + "' was supplied but isn't a known argument, so it is likely being ignored.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -751,7 +751,6 @@ Commands
|
|||||||
TConsole::TConsole() {
|
TConsole::TConsole() {
|
||||||
mCommandline.enable_history();
|
mCommandline.enable_history();
|
||||||
mCommandline.set_history_limit(20);
|
mCommandline.set_history_limit(20);
|
||||||
mCommandline.set_prompt("> ");
|
|
||||||
BackupOldLog();
|
BackupOldLog();
|
||||||
mCommandline.on_command = [this](Commandline& c) {
|
mCommandline.on_command = [this](Commandline& c) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ TEST_CASE("GetPidVid") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TServer::TServer(const std::vector<std::string_view>& Arguments) {
|
TServer::TServer(const std::vector<std::string_view>& Arguments) {
|
||||||
beammp_info("BeamMP Server v" + Application::ServerVersionString());
|
beammp_infof("BeamMP Server v{} ({})", Application::ServerVersionString(), BEAMMP_GIT_HASH);
|
||||||
Application::SetSubsystemStatus("Server", Application::Status::Starting);
|
Application::SetSubsystemStatus("Server", Application::Status::Starting);
|
||||||
if (Arguments.size() > 1) {
|
if (Arguments.size() > 1) {
|
||||||
Application::SetSetting(StrCustomIP, std::string(Arguments[0]));
|
Application::SetSetting(StrCustomIP, std::string(Arguments[0]));
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ int main(int argc, char** argv) {
|
|||||||
int BeamMPServerMain(MainArguments Arguments) {
|
int BeamMPServerMain(MainArguments Arguments) {
|
||||||
setlocale(LC_ALL, "C");
|
setlocale(LC_ALL, "C");
|
||||||
Application::InitializeConsole();
|
Application::InitializeConsole();
|
||||||
|
Application::Console().Internal().set_prompt("");
|
||||||
ArgsParser Parser;
|
ArgsParser Parser;
|
||||||
Parser.RegisterArgument({ "help" }, ArgsParser::NONE);
|
Parser.RegisterArgument({ "help" }, ArgsParser::NONE);
|
||||||
Parser.RegisterArgument({ "version" }, ArgsParser::NONE);
|
Parser.RegisterArgument({ "version" }, ArgsParser::NONE);
|
||||||
@@ -83,13 +84,11 @@ int BeamMPServerMain(MainArguments Arguments) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (Parser.FoundArgument({ "help" })) {
|
if (Parser.FoundArgument({ "help" })) {
|
||||||
Application::Console().Internal().set_prompt("");
|
|
||||||
Application::Console().WriteRaw(sCommandlineArguments);
|
Application::Console().WriteRaw(sCommandlineArguments);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (Parser.FoundArgument({ "version" })) {
|
if (Parser.FoundArgument({ "version" })) {
|
||||||
Application::Console().Internal().set_prompt("");
|
Application::Console().WriteRaw(fmt::format("BeamMP Server v{} ({})", Application::ServerVersionString(), BEAMMP_GIT_HASH));
|
||||||
Application::Console().WriteRaw("BeamMP-Server v" + Application::ServerVersionString());
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,6 +111,8 @@ int BeamMPServerMain(MainArguments Arguments) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Application::Console().Internal().set_prompt("> ");
|
||||||
|
|
||||||
Application::SetSubsystemStatus("Main", Application::Status::Starting);
|
Application::SetSubsystemStatus("Main", Application::Status::Starting);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user