commit d068182a8d4231d86d27d437e0c7d02fee8b863b
parent 639adcde31b547278e22696de00a742a04067fed
Author: cfillion <cfillion@users.noreply.github.com>
Date: Mon, 6 Jan 2020 13:03:11 -0500
extract version from ReaPack.ext and add the commit hash to the about dialog
Diffstat:
7 files changed, 31 insertions(+), 14 deletions(-)
diff --git a/ABOUT.md b/ABOUT.md
@@ -1,6 +1,6 @@
# ReaPack: Package Manager for REAPER
-This is **ReaPack v[[REAPACK_VERSION]]** built on [[REAPACK_BUILDTIME]]
+This is **ReaPack v[[REAPACK_VERSION]]** [[REAPACK_REVISION]] built on [[REAPACK_BUILDTIME]]
```
Copyright (C) 2015-2020 Christian Fillion
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
@@ -24,6 +24,20 @@ else()
find_package(SQLite3 REQUIRED)
endif()
+file(STRINGS ../Extensions/ReaPack.ext VERSION REGEX "^@version")
+string(SUBSTRING ${VERSION} 9 -1 VERSION)
+
+find_package(Git)
+if(GIT_FOUND)
+ execute_process(
+ COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
+ OUTPUT_VARIABLE GIT_COMMIT
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+else()
+ set(GIT_COMMIT "nogit")
+endif()
+
add_library(reapack OBJECT
about.cpp
action.cpp
@@ -83,7 +97,10 @@ add_library(reapack OBJECT
target_compile_features(reapack PUBLIC cxx_std_17)
target_compile_definitions(reapack PRIVATE
- REAPACK_FILE="$<TARGET_FILE_NAME:reaper_reapack>")
+ REAPACK_FILE="$<TARGET_FILE_NAME:reaper_reapack>"
+ REAPACK_VERSION="${VERSION}"
+ REAPACK_REVISION="${GIT_COMMIT}"
+)
target_include_directories(reapack PRIVATE
${CMAKE_SOURCE_DIR}/vendor ${CMAKE_CURRENT_BINARY_DIR})
diff --git a/src/about.cpp b/src/about.cpp
@@ -176,8 +176,14 @@ void About::setMetadata(const Metadata *metadata, const bool substitution)
std::string aboutText(metadata->about());
if(substitution) {
- boost::replace_all(aboutText, "[[REAPACK_VERSION]]", ReaPack::VERSION);
- boost::replace_all(aboutText, "[[REAPACK_BUILDTIME]]", ReaPack::BUILDTIME);
+ constexpr std::pair<const char *, const char *> replacements[] {
+ { "[[REAPACK_VERSION]]", REAPACK_VERSION },
+ { "[[REAPACK_REVISION]]", REAPACK_REVISION },
+ { "[[REAPACK_BUILDTIME]]", __DATE__ " " __TIME__ },
+ };
+
+ for(const auto &replacement : replacements)
+ boost::replace_all(aboutText, replacement.first, replacement.second);
}
if(aboutText.empty())
diff --git a/src/download.cpp b/src/download.cpp
@@ -68,7 +68,7 @@ DownloadContext::DownloadContext()
char userAgent[64];
snprintf(userAgent, sizeof(userAgent), "ReaPack/%s REAPER/%s",
- ReaPack::VERSION, GetAppVersion());
+ REAPACK_VERSION, GetAppVersion());
curl_easy_setopt(m_curl, CURLOPT_USERAGENT, userAgent);
curl_easy_setopt(m_curl, CURLOPT_LOW_SPEED_LIMIT, 1);
diff --git a/src/main.cpp b/src/main.cpp
@@ -51,7 +51,7 @@ static bool loadAPI(void *(*getFunc)(const char *))
Win32::messageBox(Splash_GetWnd ? Splash_GetWnd() : nullptr, String::format(
"ReaPack v%s is incompatible with this version of REAPER.\n\n"
"(Unable to import the following API function: %s)",
- ReaPack::VERSION, func.name
+ REAPACK_VERSION, func.name
).c_str(), "ReaPack: Missing REAPER feature", MB_OK);
return false;
@@ -77,7 +77,7 @@ static void menuHook(const char *name, HMENU handle, const int f)
menu.addAction("&Import repositories...", "_REAPACK_IMPORT");
menu.addAction("&Manage repositories...", "_REAPACK_MANAGE");
menu.addSeparator();
- menu.addAction(String::format("&About ReaPack v%s", ReaPack::VERSION), "_REAPACK_ABOUT");
+ menu.addAction(String::format("&About ReaPack v%s", REAPACK_VERSION), "_REAPACK_ABOUT");
}
static bool checkLocation(REAPER_PLUGIN_HINSTANCE module)
diff --git a/src/reapack.cpp b/src/reapack.cpp
@@ -36,9 +36,6 @@
#include <reaper_plugin_functions.h>
-const char *ReaPack::VERSION = "1.2.2";
-const char *ReaPack::BUILDTIME = __DATE__ " " __TIME__;
-
ReaPack *ReaPack::s_instance = nullptr;
#ifdef _WIN32
@@ -384,7 +381,7 @@ void ReaPack::registerSelf()
Index ri("ReaPack");
Category cat("Extensions", &ri);
Package pkg(Package::ExtensionType, "ReaPack.ext", &cat);
- Version ver(VERSION, &pkg);
+ Version ver(REAPACK_VERSION, &pkg);
ver.setAuthor("cfillion");
ver.addSource(new Source(REAPACK_FILE, "dummy url", &ver));
diff --git a/src/reapack.hpp b/src/reapack.hpp
@@ -40,9 +40,6 @@ class Transaction;
class ReaPack {
public:
- static const char *VERSION;
- static const char *BUILDTIME;
-
static ReaPack *instance() { return s_instance; }
static Path resourcePath();