diff --git a/.gitmodules b/.gitmodules index b7fb2c76..7bc90d60 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,9 +4,6 @@ [submodule "externals/loguru"] path = externals/loguru url = https://github.com/emilk/loguru.git -[submodule "externals/dotenv-cpp"] - path = externals/dotenv-cpp - url = https://github.com/laserpants/dotenv-cpp.git [submodule "externals/json"] path = externals/json url = https://github.com/nlohmann/json.git diff --git a/CMakeLists.txt b/CMakeLists.txt index fc48d763..f6e94617 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,6 @@ add_subdirectory(externals) set(GMOCK_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/externals/googletest/googlemock/include") set(GTEST_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/externals/googletest/googletest/include") -set(DOTENV_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/externals/dotenv-cpp/include") enable_testing() diff --git a/apps/client/.env.example b/apps/client/.env.example deleted file mode 100644 index 81027ed7..00000000 --- a/apps/client/.env.example +++ /dev/null @@ -1,2 +0,0 @@ -SERVER_HOST=127.0.0.1 -SERVER_PORT=1234 \ No newline at end of file diff --git a/apps/client/CMakeLists.txt b/apps/client/CMakeLists.txt index 211a2ac7..55ea5823 100644 --- a/apps/client/CMakeLists.txt +++ b/apps/client/CMakeLists.txt @@ -5,7 +5,7 @@ set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) set(SOURCES - config/ConfigProvider.cpp + core/configProvider/ConfigProvider.cpp api/SessionImpl.cpp api/SocketConnectorImpl.cpp api/MessageFactoryImpl.cpp @@ -126,6 +126,7 @@ target_link_libraries(${EXECUTABLE_NAME} PUBLIC collection envParser fmt::fmt + config-cxx ) target_include_directories(${EXECUTABLE_NAME} PUBLIC ${GMOCK_INCLUDE_DIR} ${DOTENV_INCLUDE_DIR}) @@ -148,6 +149,7 @@ target_link_libraries(${EXECUTABLE_NAME}UT PUBLIC envParser faker-cxx fmt::fmt + config-cxx ) target_include_directories(${EXECUTABLE_NAME}UT PUBLIC ${GMOCK_INCLUDE_DIR}) diff --git a/apps/client/Main.cpp b/apps/client/Main.cpp index c7c0a030..eb83edd1 100644 --- a/apps/client/Main.cpp +++ b/apps/client/Main.cpp @@ -8,11 +8,10 @@ #include "api/SessionImpl.h" #include "api/SocketConnectorImpl.h" #include "common/filesystem/GetProjectPath.h" -#include "config/ConfigProvider.h" +#include "core/configProvider/ConfigProvider.h" #include "gui/qml/LoaderController.h" #include "gui/states/StateFactory.h" #include "gui/states/StateMachine.h" -#include "laserpants/dotenv/dotenv.h" #include "loguru.hpp" #include "messages/MessageReaderImpl.h" #include "messages/MessageSenderImpl.h" @@ -20,15 +19,11 @@ int main(int argc, char* argv[]) { - auto dotEnvPath = common::filesystem::getProjectPath("chatroom") + "/apps/client/.env"; - - dotenv::init(dotEnvPath.c_str()); - loguru::g_preamble_date = false; loguru::init(argc, argv); - client::config::ConfigProvider configProvider; + client::core::ConfigProvider configProvider; const auto serverHost = configProvider.getServerHost(); @@ -65,5 +60,5 @@ int main(int argc, char* argv[]) std::thread api{[&] { context.run(); }}; - return app.exec(); + return QGuiApplication::exec(); } diff --git a/apps/client/config/ConfigProvider.cpp b/apps/client/config/ConfigProvider.cpp deleted file mode 100644 index f96bd5da..00000000 --- a/apps/client/config/ConfigProvider.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "ConfigProvider.h" - -#include "envParser/EnvironmentParser.h" - -namespace client::config -{ -std::string ConfigProvider::getServerHost() const -{ - return common::envParser::EnvironmentParser::parseRequiredString("SERVER_HOST"); -} - -int ConfigProvider::getServerPort() const -{ - return common::envParser::EnvironmentParser::parseRequiredInt("SERVER_PORT"); -} -} diff --git a/apps/client/config/ConfigProvider.h b/apps/client/config/ConfigProvider.h deleted file mode 100644 index 34caf9ce..00000000 --- a/apps/client/config/ConfigProvider.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include - -namespace client::config -{ -class ConfigProvider -{ -public: - std::string getServerHost() const; - int getServerPort() const; -}; -} diff --git a/apps/client/config/custom-environment-variables.json b/apps/client/config/custom-environment-variables.json new file mode 100644 index 00000000..bc0b8731 --- /dev/null +++ b/apps/client/config/custom-environment-variables.json @@ -0,0 +1,6 @@ +{ + "server": { + "host": "SERVER_HOST", + "port": "SERVER_PORT" + } +} diff --git a/apps/client/config/default.json b/apps/client/config/default.json new file mode 100644 index 00000000..83b160dc --- /dev/null +++ b/apps/client/config/default.json @@ -0,0 +1,6 @@ +{ + "server": { + "host": "127.0.0.1", + "port": 3000 + } +} diff --git a/apps/client/core/configProvider/ConfigProvider.cpp b/apps/client/core/configProvider/ConfigProvider.cpp new file mode 100644 index 00000000..d283c6ab --- /dev/null +++ b/apps/client/core/configProvider/ConfigProvider.cpp @@ -0,0 +1,18 @@ +#include "ConfigProvider.h" + +#include "envParser/EnvironmentParser.h" + +namespace client::core +{ +ConfigProvider::ConfigProvider() : config{std::make_unique()} {} + +std::string ConfigProvider::getServerHost() const +{ + return config->get("server.host"); +} + +int ConfigProvider::getServerPort() const +{ + return config->get("server.port"); +} +} diff --git a/apps/client/core/configProvider/ConfigProvider.h b/apps/client/core/configProvider/ConfigProvider.h new file mode 100644 index 00000000..a164da96 --- /dev/null +++ b/apps/client/core/configProvider/ConfigProvider.h @@ -0,0 +1,21 @@ +#pragma once + +#include +#include + +#include "config-cxx/Config.h" + +namespace client::core +{ +class ConfigProvider +{ +public: + ConfigProvider(); + + std::string getServerHost() const; + int getServerPort() const; + +private: + std::unique_ptr config; +}; +} diff --git a/apps/server/Main.cpp b/apps/server/Main.cpp index f52af200..9f6164eb 100644 --- a/apps/server/Main.cpp +++ b/apps/server/Main.cpp @@ -4,7 +4,6 @@ #include "common/filesystem/GetProjectPath.h" #include "fmt/format.h" -#include "laserpants/dotenv/dotenv.h" #include "loguru.hpp" #include "server/core/configProvider/ConfigProvider.h" #include "server/core/database/DatabaseConnectionFactory.h" diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 388178d1..8ca43e7d 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -2,7 +2,6 @@ set(LOGURU_WITH_STREAMS 1) set(LOGURU_THREADNAME_WIDTH 11) set(LOGURU_FILENAME_WIDTH 30) add_subdirectory(loguru) -add_subdirectory(dotenv-cpp) set(BUILD_FAKER_TESTS OFF) add_subdirectory(faker-cxx) add_subdirectory(cpr) diff --git a/externals/dotenv-cpp b/externals/dotenv-cpp deleted file mode 160000 index f493f473..00000000 --- a/externals/dotenv-cpp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f493f4738096504c7ecb1cd183a51a246693accc