1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

feat(logging): check if current code is tagged

This commit adds a new define called "GIT_DESCRIBE_EXACT" through cmake.
It is checked with a regex in "updatecheck.cpp" for a version number after the
check for new updates. If there is no version number,
a warning is output to log.

The reason for the new define is to avoid doing too much regex on
"GET_DESCRIBE", since "GIT_DESCRIBE_EXACT" will not contain a version number if
the code is not tagged.
This commit is contained in:
powerjungle 2020-11-14 11:51:53 +02:00
parent aca94300c8
commit 90cc962802
No known key found for this signature in database
GPG Key ID: 190C37B0F8665DA8
2 changed files with 37 additions and 1 deletions

View File

@ -214,6 +214,24 @@ add_definitions(
-DGIT_VERSION="${GIT_VERSION}"
)
if (NOT GIT_DESCRIBE_EXACT)
execute_process(
COMMAND git describe --exact-match --tags HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_DESCRIBE_EXACT
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT GIT_DESCRIBE_EXACT)
set(GIT_DESCRIBE_EXACT "Nightly")
endif()
endif()
add_definitions(
-DGIT_DESCRIBE_EXACT="${GIT_DESCRIBE_EXACT}"
)
set(APPLE_EXT False)
if (FOUNDATION_FOUND AND IOKIT_FOUND)
set(APPLE_EXT True)

View File

@ -29,6 +29,8 @@
#include <QTimer>
#include <cassert>
#define VERSION_REGEX_STRING "v([0-9]+)\\.([0-9]+)\\.([0-9]+)"
namespace {
const QString versionUrl{QStringLiteral("https://api.github.com/repos/qTox/qTox/releases/latest")};
@ -41,7 +43,7 @@ struct Version {
Version tagToVersion(QString tagName)
{
// capture tag name to avoid showing update available on dev builds which include hash as part of describe
QRegularExpression versionFormat{QStringLiteral("v([0-9]+)\\.([0-9]+)\\.([0-9]+)")};
QRegularExpression versionFormat{QStringLiteral(VERSION_REGEX_STRING)};
auto matches = versionFormat.match(tagName);
assert(matches.lastCapturedIndex() == 3);
@ -85,6 +87,17 @@ bool isUpdateAvailable(Version current, Version available)
return false;
}
bool isCurrentVersionStable()
{
QRegularExpression versionRegex{QStringLiteral(VERSION_REGEX_STRING)};
auto currentVer = versionRegex.match(GIT_DESCRIBE_EXACT);
if (currentVer.hasMatch()){
return true;
} else {
return false;
}
}
} // namespace
UpdateCheck::UpdateCheck(const Settings& settings)
@ -143,5 +156,10 @@ void UpdateCheck::handleResponse(QNetworkReply* reply)
qInfo() << "qTox is up to date";
emit upToDate();
}
if (isCurrentVersionStable() == false) {
qWarning() << "qTox is running an unstable version";
}
reply->deleteLater();
}