repoindex/lib/alpm/config.h

279 lines
6.5 KiB
C++

#ifndef ALPM_CONFIG_H
#define ALPM_CONFIG_H
#include <c++utilities/application/argumentparser.h>
#include <c++utilities/chrono/timespan.h>
#include <QString>
#include <QStringList>
#include <QHostAddress>
QT_FORWARD_DECLARE_CLASS(QJsonValue)
namespace RepoIndex {
enum class SignatureLevel;
// these are needed from the beginning and are initialized in the main()
extern bool useShSyntax;
extern const char *shchar;
class ConfigArgs
{
public:
ConfigArgs(ApplicationUtilities::ArgumentParser &parser);
ApplicationUtilities::HelpArgument helpArg;
ApplicationUtilities::Argument packagesArg;
ApplicationUtilities::Argument buildOrderArg;
ApplicationUtilities::Argument addSourceOnlyDepsArg;
ApplicationUtilities::Argument requireSourcesArg;
ApplicationUtilities::Argument serverArg;
ApplicationUtilities::Argument repoNameArg;
ApplicationUtilities::Argument upgradeLookupArg;
ApplicationUtilities::Argument mingwBundleArg;
ApplicationUtilities::Argument repoindexConfArg;
ApplicationUtilities::Argument rootdirArg;
ApplicationUtilities::Argument dbpathArg;
ApplicationUtilities::Argument pacmanConfArg;
ApplicationUtilities::Argument reposFromPacmanConfEnabled;
ApplicationUtilities::Argument websocketAddrArg;
ApplicationUtilities::Argument websocketPortArg;
ApplicationUtilities::Argument certFileArg;
ApplicationUtilities::Argument keyFileArg;
ApplicationUtilities::Argument insecureArg;
ApplicationUtilities::Argument aurArg;
ApplicationUtilities::Argument verboseArg;
ApplicationUtilities::Argument outputFileArg;
ApplicationUtilities::Argument targetDirArg;
ApplicationUtilities::Argument targetNameArg;
ApplicationUtilities::Argument targetFormatArg;
ApplicationUtilities::Argument iconThemesArg;
ApplicationUtilities::Argument defaultIconThemeArg;
ApplicationUtilities::Argument extraPackagesArg;
ApplicationUtilities::Argument qtPluginsArg;
ApplicationUtilities::Argument cacheDirArg;
ApplicationUtilities::Argument storageDirArg;
ApplicationUtilities::Argument shSyntaxArg;
};
class Config;
class RepoEntry
{
friend class Config;
public:
RepoEntry();
const QString &name() const;
const QString &databasePath() const;
const QString &sourceDir() const;
const QString &packageDir() const;
const QStringList &server() const;
const QStringList &upgradeSources() const;
SignatureLevel sigLevel() const;
ChronoUtilities::TimeSpan maxDatabaseAge() const;
bool isIgnored() const;
void load(const QJsonValue &jsonValue);
private:
QString m_name;
QString m_dataBaseFile;
QString m_sourceDir;
QString m_packageDir;
QStringList m_server;
QStringList m_upgradeSources;
SignatureLevel m_sigLevel;
ChronoUtilities::TimeSpan m_maxDatabaseAge;
bool m_ignored;
};
inline const QString &RepoEntry::name() const
{
return m_name;
}
inline const QString &RepoEntry::databasePath() const
{
return m_dataBaseFile;
}
inline const QString &RepoEntry::sourceDir() const
{
return m_sourceDir;
}
inline const QString &RepoEntry::packageDir() const
{
return m_packageDir;
}
inline const QStringList &RepoEntry::server() const
{
return m_server;
}
inline const QStringList &RepoEntry::upgradeSources() const
{
return m_upgradeSources;
}
inline SignatureLevel RepoEntry::sigLevel() const
{
return m_sigLevel;
}
inline ChronoUtilities::TimeSpan RepoEntry::maxDatabaseAge() const
{
return m_maxDatabaseAge;
}
inline bool RepoEntry::isIgnored() const
{
return m_ignored;
}
class Config
{
public:
Config();
const QString &alpmRootDir() const;
const QString &alpmDbPath() const;
const QString &pacmanConfFile() const;
const QString &cacheDir() const;
const QString &storageDir() const;
const QHostAddress &websocketServerListeningAddr() const;
quint16 websocketServerListeningPort() const;
const QString &serverCertFile() const;
const QString &serverKeyFile() const;
bool serverInsecure() const;
bool isServerCloseable() const;
void setServerCloseable(bool closeable);
bool isLocalDatabaseEnabled() const;
bool areReposFromPacmanConfEnabled() const;
const QList<RepoEntry> &repoEntries() const;
bool isAurEnabled() const;
bool isVerbose() const;
bool runServer() const;
const char *shSyntax() const;
void loadFromConfigFile(const QString &args);
void loadFromConfigFile(const ConfigArgs &args);
void loadFromArgs(const ConfigArgs &args);
void loadLocalOnlySetup();
private:
QString m_alpmRootDir;
QString m_alpmDbPath;
QString m_pacmanConfFile;
QString m_cacheDir;
QString m_storageDir;
QHostAddress m_websocketServerListeningAddr;
quint16 m_websocketServerListeningPort;
QString m_serverCertFile;
QString m_serverKeyFile;
bool m_serverInsecure;
bool m_serverCloseable;
QList<RepoEntry> m_repoEntries;
bool m_localEnabled;
bool m_reposFromPacmanConfEnabled;
bool m_aurEnabled;
bool m_verbose;
bool m_runServer;
};
inline const QString &Config::alpmRootDir() const
{
return m_alpmRootDir;
}
inline const QString &Config::alpmDbPath() const
{
return m_alpmDbPath;
}
inline const QString &Config::pacmanConfFile() const
{
return m_pacmanConfFile;
}
inline const QString &Config::cacheDir() const
{
return m_cacheDir;
}
inline const QString &Config::storageDir() const
{
return m_storageDir;
}
inline const QHostAddress &Config::websocketServerListeningAddr() const
{
return m_websocketServerListeningAddr;
}
inline quint16 Config::websocketServerListeningPort() const
{
return m_websocketServerListeningPort;
}
inline const QString &Config::serverCertFile() const
{
return m_serverCertFile;
}
inline const QString &Config::serverKeyFile() const
{
return m_serverKeyFile;
}
inline bool Config::serverInsecure() const
{
return m_serverInsecure;
}
inline bool Config::isServerCloseable() const
{
return m_serverCloseable;
}
inline void Config::setServerCloseable(bool closeable)
{
m_serverCloseable = closeable;
}
inline bool Config::isLocalDatabaseEnabled() const
{
return m_localEnabled;
}
inline bool Config::areReposFromPacmanConfEnabled() const
{
return m_reposFromPacmanConfEnabled;
}
inline const QList<RepoEntry> &Config::repoEntries() const
{
return m_repoEntries;
}
inline bool Config::isAurEnabled() const
{
return m_aurEnabled;
}
inline bool Config::isVerbose() const
{
return m_verbose;
}
inline bool Config::runServer() const
{
return m_runServer;
}
} // namespace Alpm
#endif // ALPM_CONFIG_H