1414#include < algorithm>
1515#include " lgx.h"
1616
17- static const QString MODULES_DOWNLOAD_BASE_URL = QStringLiteral(" https://github.com/logos-co/logos-modules/releases/latest/download " );
17+ static const QString MODULES_REPO_BASE = QStringLiteral(" https://github.com/logos-co/logos-modules/releases" );
1818
1919// Returns true if version string `a` is >= `b`, comparing dot-separated numeric segments.
2020static bool versionGreaterOrEqual (const QString& a, const QString& b)
@@ -33,6 +33,7 @@ static bool versionGreaterOrEqual(const QString& a, const QString& b)
3333
3434PackageManagerLib::PackageManagerLib (QObject* parent)
3535 : QObject(parent)
36+ , m_releaseTag(QStringLiteral(" latest" ))
3637 , m_networkManager(nullptr )
3738 , m_isInstalling(false )
3839{
@@ -57,6 +58,20 @@ void PackageManagerLib::setUiPluginsDirectory(const QString& uiPluginsDirectory)
5758 qDebug () << " Set UI plugins directory to:" << m_uiPluginsDirectory;
5859}
5960
61+ void PackageManagerLib::setRelease (const QString& releaseTag)
62+ {
63+ m_releaseTag = releaseTag.isEmpty () ? QStringLiteral (" latest" ) : releaseTag;
64+ qDebug () << " Set release tag to:" << m_releaseTag;
65+ }
66+
67+ QString PackageManagerLib::downloadBaseUrl () const
68+ {
69+ if (m_releaseTag == " latest" ) {
70+ return MODULES_REPO_BASE + " /latest/download" ;
71+ }
72+ return MODULES_REPO_BASE + " /download/" + m_releaseTag;
73+ }
74+
6075QString PackageManagerLib::installPluginFile (const QString& pluginPath, QString& errorMsg, bool skipIfNotNewerVersion)
6176{
6277 qDebug () << " PackageManagerLib: Installing plugin file:" << pluginPath;
@@ -407,7 +422,7 @@ bool PackageManagerLib::installPackage(const QString& packageName)
407422 }
408423
409424 // Download the LGX package file
410- QString downloadUrl = QString (" %1/%2" ).arg (MODULES_DOWNLOAD_BASE_URL , packageFile);
425+ QString downloadUrl = QString (" %1/%2" ).arg (downloadBaseUrl () , packageFile);
411426 QString destinationPath = QDir (tempDir).filePath (packageFile);
412427
413428 qDebug () << " Downloading package file:" << packageFile;
@@ -503,7 +518,7 @@ void PackageManagerLib::startAsyncPackageListFetch()
503518 return ;
504519 }
505520
506- QString urlString = QString (" %1/list.json" ).arg (MODULES_DOWNLOAD_BASE_URL );
521+ QString urlString = QString (" %1/list.json" ).arg (downloadBaseUrl () );
507522 QUrl url (urlString);
508523 QNetworkRequest request (url);
509524
@@ -602,7 +617,7 @@ void PackageManagerLib::startNextFileDownload()
602617 }
603618
604619 QString fileName = m_asyncState.filesToDownload [m_asyncState.currentDownloadIndex ];
605- QString downloadUrl = QString (" %1/%2" ).arg (MODULES_DOWNLOAD_BASE_URL , fileName);
620+ QString downloadUrl = QString (" %1/%2" ).arg (downloadBaseUrl () , fileName);
606621
607622 qDebug () << " Async: Downloading package file:" << fileName;
608623
@@ -714,7 +729,7 @@ QJsonArray PackageManagerLib::fetchPackageListFromOnline()
714729 return packagesArray;
715730 }
716731
717- QString urlString = QString (" %1/list.json" ).arg (MODULES_DOWNLOAD_BASE_URL );
732+ QString urlString = QString (" %1/list.json" ).arg (downloadBaseUrl () );
718733 QUrl url (urlString);
719734 QNetworkRequest request (url);
720735
0 commit comments