diff --git a/libs/client-sdk/include/launchdarkly/client_side/bindings/c/sdk.h b/libs/client-sdk/include/launchdarkly/client_side/bindings/c/sdk.h index bd195f57b..3eee3006e 100644 --- a/libs/client-sdk/include/launchdarkly/client_side/bindings/c/sdk.h +++ b/libs/client-sdk/include/launchdarkly/client_side/bindings/c/sdk.h @@ -31,6 +31,13 @@ typedef struct _LDClientSDK* LDClientSDK; LD_EXPORT(LDClientSDK) LDClientSDK_New(LDClientConfig config, LDContext context); +/** + * Returns the version of the SDK. + * @return String representation of the SDK version. + */ +LD_EXPORT(char const*) +LDClientSDK_Version(void); + /** * Starts the SDK, initiating a connection to LaunchDarkly if not offline. * diff --git a/libs/client-sdk/include/launchdarkly/client_side/client.hpp b/libs/client-sdk/include/launchdarkly/client_side/client.hpp index 982405abb..81680de9e 100644 --- a/libs/client-sdk/include/launchdarkly/client_side/client.hpp +++ b/libs/client-sdk/include/launchdarkly/client_side/client.hpp @@ -254,9 +254,6 @@ class IClient { class Client : public IClient { public: - inline static char const* const kVersion = - "0.1.0"; // {x-release-please-version} - Client(Config config, Context context); Client(Client&&) = delete; @@ -315,7 +312,15 @@ class Client : public IClient { flag_manager::IFlagNotifier& FlagNotifier() override; + /** + * Returns the version of the SDK. + * @return String representing version of the SDK. + */ + [[nodiscard]] static char const* Version(); + private: + inline static char const* const kVersion = + "0.1.0"; // {x-release-please-version} std::unique_ptr client; }; diff --git a/libs/client-sdk/src/bindings/c/sdk.cpp b/libs/client-sdk/src/bindings/c/sdk.cpp index c20d156da..9a9f66f90 100644 --- a/libs/client-sdk/src/bindings/c/sdk.cpp +++ b/libs/client-sdk/src/bindings/c/sdk.cpp @@ -58,6 +58,11 @@ LDClientSDK_New(LDClientConfig config, LDContext context) { return FROM_SDK(sdk); } +LD_EXPORT(char const*) +LDClientSDK_Version(void) { + return Client::Version(); +} + LD_EXPORT(bool) LDClientSDK_Start(LDClientSDK sdk, unsigned int milliseconds, diff --git a/libs/client-sdk/src/client.cpp b/libs/client-sdk/src/client.cpp index 1818f7c94..82d76a39b 100644 --- a/libs/client-sdk/src/client.cpp +++ b/libs/client-sdk/src/client.cpp @@ -96,4 +96,8 @@ flag_manager::IFlagNotifier& Client::FlagNotifier() { return client->FlagNotifier(); } +char const* Client::Version() { + return kVersion; +} + } // namespace launchdarkly::client_side diff --git a/libs/client-sdk/src/client_impl.hpp b/libs/client-sdk/src/client_impl.hpp index 10659dc9d..20ab4cf5d 100644 --- a/libs/client-sdk/src/client_impl.hpp +++ b/libs/client-sdk/src/client_impl.hpp @@ -37,7 +37,7 @@ class ClientImpl : public IClient { ClientImpl(ClientImpl const&) = delete; ClientImpl& operator=(ClientImpl) = delete; ClientImpl& operator=(ClientImpl&& other) = delete; - + bool Initialized() const override; using FlagKey = std::string; diff --git a/libs/client-sdk/tests/client_c_bindings_test.cpp b/libs/client-sdk/tests/client_c_bindings_test.cpp index ec2c1d610..43cd34140 100644 --- a/libs/client-sdk/tests/client_c_bindings_test.cpp +++ b/libs/client-sdk/tests/client_c_bindings_test.cpp @@ -18,5 +18,9 @@ TEST(ClientBindings, MinimalInstantiation) { LDClientSDK sdk = LDClientSDK_New(config, context); + char const* version = LDClientSDK_Version(); + ASSERT_TRUE(version); + ASSERT_STREQ(version, "0.1.0"); // {x-release-please-version} + LDClientSDK_Free(sdk); } diff --git a/libs/client-sdk/tests/client_test.cpp b/libs/client-sdk/tests/client_test.cpp index 738059966..9b4ab40e3 100644 --- a/libs/client-sdk/tests/client_test.cpp +++ b/libs/client-sdk/tests/client_test.cpp @@ -13,6 +13,10 @@ TEST(ClientTest, ClientConstructedWithMinimalConfigAndContext) { Context context = ContextBuilder().Kind("cat", "shadow").Build(); Client client(std::move(*config), context); + + char const* version = client.Version(); + ASSERT_TRUE(version); + ASSERT_STREQ(version, "0.1.0"); // {x-release-please-version} } TEST(ClientTest, AllFlagsIsEmpty) { diff --git a/release-please-config.json b/release-please-config.json index 00541c231..60ea473a4 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -6,7 +6,9 @@ "libs/client-sdk": { "initial-version": "0.1.0", "extra-files": [ - "include/launchdarkly/client_side/client.hpp" + "include/launchdarkly/client_side/client.hpp", + "tests/client_c_bindings_test.cpp", + "tests/client_test.cpp" ] }, "libs/server-sent-events": {