ATBTariffCalculator/CalculatorCInterface/local_git_repository.h
2024-03-28 16:45:46 +01:00

59 lines
1.7 KiB
C++

#ifndef LOCAL_GIT_REPOSITORY_H_INCLUDED
#define LOCAL_GIT_REPOSITORY_H_INCLUDED
#include <QByteArray>
#include <QString>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QDir>
#include <QMap>
#include <git2.h>
class GitLibrary;
class LocalGitRepository {
friend class GitLibrary;
QString m_localRepository;
mutable QByteArray m_fileMenu;
mutable int32_t m_fileMenuSize;
git_repository *m_git_repository;
static QString repoRootDirectory;
static QMap<QString, LocalGitRepository *> localGitRepos;
protected: // force heap-based objects
LocalGitRepository(QString const &localRepository);
~LocalGitRepository();
public:
static void SetReposRootDirectory(QString s);
static QString GetReposRootDirectory();
static LocalGitRepository *GetInstance(QString const &localRepository);
static bool DestroyInstance(QString const &localRepository);
static void DestroyAllRepositories();
static QMap<QString, LocalGitRepository *> &GetLocalGitRepos();
QString localRepositoryName() const;
QString localRepositoryPath() const;
void SetGitRepository(git_repository *git_repo);
git_repository const *GetGitRepository() const;
git_repository *GetGitRepository();
static QString localRepositoryPath(QString const &localRepository);
QByteArray GetFileMenuInternal();
int32_t GetFileMenuSizeInternal() const;
QByteArray GetFileNameInternal(QString const &fileId);
int32_t GetFileSize(QString const &fileId);
QByteArray GetFileInternal(QString const &fileId);
bool SetFileInternal(QString const &fileId, QByteArray const &json);
};
#endif // LOCAL_GIT_REPOSITORY_H_INCLUDED