From 7eca67910e9e25b7015eeb5db1378c473f35bc51 Mon Sep 17 00:00:00 2001 From: Dominik Chrastecky Date: Fri, 4 Sep 2020 19:57:21 +0200 Subject: [PATCH] check for new version --- main.cpp | 7 +++++++ newversionchecker.cpp | 33 +++++++++++++++++++++++++++++++++ newversionchecker.h | 22 ++++++++++++++++++++++ pwa-to-twa.pro | 2 ++ 4 files changed, 64 insertions(+) create mode 100644 newversionchecker.cpp create mode 100644 newversionchecker.h diff --git a/main.cpp b/main.cpp index 572bd71..6f6bb90 100644 --- a/main.cpp +++ b/main.cpp @@ -6,6 +6,7 @@ #include "websiteparser.h" #include "androidprojectmodifier.h" #include "coloredstring.h" +#include "newversionchecker.h" int main(int argc, char *argv[]) { @@ -13,6 +14,12 @@ int main(int argc, char *argv[]) try { QCoreApplication app(argc, argv); + NewVersionChecker newVersionChecker; + + if (newVersionChecker.isNewVersionAvailable()) { + io.writeError(ColoredString("New version available at https://github.com/RikudouSage/PwaToTwa/releases/latest")); + } + if (app.arguments().count() < 4 || app.arguments().contains("--help")) { const auto binaryName = app.arguments().at(0); diff --git a/newversionchecker.cpp b/newversionchecker.cpp new file mode 100644 index 0000000..50cfa83 --- /dev/null +++ b/newversionchecker.cpp @@ -0,0 +1,33 @@ +#include "newversionchecker.h" + +NewVersionChecker::NewVersionChecker() +{ + +} + +bool NewVersionChecker::isNewVersionAvailable() +{ + return latestVersion() > currentVersion(); +} + +QVersionNumber NewVersionChecker::currentVersion() +{ + return QVersionNumber::fromString("0.0.14"); +} + +QVersionNumber NewVersionChecker::latestVersion() +{ + QNetworkAccessManager manager; + QNetworkRequest request(QUrl("https://github.com/RikudouSage/PwaToTwa/releases/latest")); + QEventLoop loop; + + QObject::connect(&manager, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit); + + auto reply = manager.get(request); + loop.exec(); + + auto locationHeader = reply->header(QNetworkRequest::KnownHeaders::LocationHeader); + delete reply; + + return QVersionNumber::fromString(locationHeader.toUrl().path().toUtf8().split('/').last().replace('v', "")); +} diff --git a/newversionchecker.h b/newversionchecker.h new file mode 100644 index 0000000..aeff977 --- /dev/null +++ b/newversionchecker.h @@ -0,0 +1,22 @@ +#ifndef NEWVERSIONCHECKER_H +#define NEWVERSIONCHECKER_H + +#include +#include +#include +#include +#include +#include + +class NewVersionChecker +{ +public: + NewVersionChecker(); + bool isNewVersionAvailable(); + +private: + QVersionNumber currentVersion(); + QVersionNumber latestVersion(); +}; + +#endif // NEWVERSIONCHECKER_H diff --git a/pwa-to-twa.pro b/pwa-to-twa.pro index ffc55fc..1bb9c59 100644 --- a/pwa-to-twa.pro +++ b/pwa-to-twa.pro @@ -28,6 +28,7 @@ SOURCES += \ githelper.cpp \ inputoutput.cpp \ main.cpp \ + newversionchecker.cpp \ websiteparser.cpp # Default rules for deployment. @@ -40,4 +41,5 @@ HEADERS += \ coloredstring.h \ githelper.h \ inputoutput.h \ + newversionchecker.h \ websiteparser.h