reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

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:
MABOUT.md | 2+-
Msrc/CMakeLists.txt | 19++++++++++++++++++-
Msrc/about.cpp | 10++++++++--
Msrc/download.cpp | 2+-
Msrc/main.cpp | 4++--
Msrc/reapack.cpp | 5+----
Msrc/reapack.hpp | 3---
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();