Gpt4all Custom Updater

This PR establishes the initial infrastructure required to migrate gpt4all away from reliance on the IFW framwork by implementing a custom updater.
This custom updater (currently headless only) can perform the same operations as the existing updater with the option for more functionality to be added and most importantly, is installer agnostic, meaning gpt4all can start to leverage platform specific installers.

Implements both offline and online installation and update mechanisms.

Initial implementation of: https://github.com/nomic-ai/gpt4all/issues/2878

Signed-off-by: John Parent <john.parent@kitware.com>
This commit is contained in:
John Parent
2024-10-19 01:06:36 -04:00
parent 9cafd38dcf
commit 0765f917a9
34 changed files with 1252 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
#pragma once
#include "Package.h"
#include <QVersionNumber>
#include <QDate>
#include <QFile>
#include <QXmlStreamReader>
#include <QString>
#include <QStringList>
namespace gpt4all{
namespace manifest {
enum releaseType{
RELEASE,
DEBUG
};
class ManifestFile {
public:
static ManifestFile * parseManifest(QIODevice *manifestInput);
QUrl & getInstallerEndpoint();
QString & getExpectedHash();
private:
ManifestFile() {}
QString name;
QVersionNumber release_ver;
QString notes;
QStringList authors;
QDate release_date;
releaseType config;
QVersionNumber last_supported_version;
QString entity;
QStringList component_list;
Package pkg;
void parsePkgDescription();
void parsePkgManifest();
QXmlStreamReader xml;
};
}
}