mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-10-31 15:47:10 -04:00
8736e39643
Subversion keyword expansion of $Rev:$ in a file is hopeless as it is impossible to coordinate with a release. Revert to an empty string when it can't be discovered with svn info etc.. Further changes to the way verion and revision numbers are generated Local builds from source tar balls or the two phase wsjtx-superbuild no longer specify any revision, just the version number. Since these sort of builds are expected to be release candidates or release versions the revision (svn changeset number) is implicit from the svn tag of the version. Merged from wsjtx-1.4 branch. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4986 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
89 lines
2.0 KiB
C++
89 lines
2.0 KiB
C++
#include "revision_utils.hpp"
|
|
|
|
#include <cstring>
|
|
|
|
#include <QCoreApplication>
|
|
#include <QRegularExpression>
|
|
|
|
#include "svnversion.h"
|
|
|
|
namespace
|
|
{
|
|
QString revision_extract_number (QString const& s)
|
|
{
|
|
QString revision;
|
|
|
|
// try and match a number
|
|
QRegularExpression re {R"(^[$:]\w+: (\d+[^$]*)\$$)"};
|
|
auto match = re.match (s);
|
|
if (match.hasMatch ())
|
|
{
|
|
revision = 'r' + match.captured (1);
|
|
}
|
|
return revision;
|
|
}
|
|
}
|
|
|
|
QString revision (QString const& svn_rev_string)
|
|
{
|
|
QString result;
|
|
auto revision_from_svn = revision_extract_number (svn_rev_string);
|
|
|
|
#if defined (CMAKE_BUILD)
|
|
QString svn_info {":Rev: " WSJTX_STRINGIZE (SVNVERSION) " $"};
|
|
|
|
auto revision_from_svn_info = revision_extract_number (svn_info);
|
|
if (!revision_from_svn_info.isEmpty ())
|
|
{
|
|
// we managed to get the revision number from svn info etc.
|
|
result = revision_from_svn_info;
|
|
}
|
|
else if (!revision_from_svn.isEmpty ())
|
|
{
|
|
// fall back to revision passed in if any
|
|
result = revision_from_svn;
|
|
}
|
|
else
|
|
{
|
|
// match anything
|
|
QRegularExpression re {R"(^[$:]\w+: ([^$]*)\$$)"};
|
|
auto match = re.match (svn_info);
|
|
if (match.hasMatch ())
|
|
{
|
|
result = match.captured (1);
|
|
}
|
|
}
|
|
#else
|
|
if (!revision_from_svn.isEmpty ())
|
|
{
|
|
// not CMake build so all we have is revision passed
|
|
result = revision_from_svn;
|
|
}
|
|
#endif
|
|
return result.trimmed ();
|
|
}
|
|
|
|
QString version ()
|
|
{
|
|
#if defined (CMAKE_BUILD)
|
|
QString v {WSJTX_STRINGIZE (WSJTX_VERSION_MAJOR) "." WSJTX_STRINGIZE (WSJTX_VERSION_MINOR) "." WSJTX_STRINGIZE (WSJTX_VERSION_PATCH)};
|
|
# if defined (WSJTX_RC)
|
|
v += "-rc" WSJTX_STRINGIZE (WSJTX_RC);
|
|
# endif
|
|
#else
|
|
QString v {"Not for Release"};
|
|
#endif
|
|
return v;
|
|
}
|
|
|
|
QString program_title (QString const& revision)
|
|
{
|
|
QString id {QCoreApplication::applicationName ()};
|
|
#if defined (CMAKE_BUILD)
|
|
id += " v" + version ();
|
|
#else
|
|
id += " Not for Release";
|
|
#endif
|
|
return id + " " + revision + " by K1JT";
|
|
}
|