2015-08-10 22:46:01 +02:00
|
|
|
#ifndef ALPM_CONFIG_H
|
|
|
|
#define ALPM_CONFIG_H
|
|
|
|
|
|
|
|
#include <c++utilities/application/argumentparser.h>
|
2016-02-15 18:26:05 +01:00
|
|
|
#include <c++utilities/chrono/timespan.h>
|
2015-08-10 22:46:01 +02:00
|
|
|
|
|
|
|
#include <QString>
|
|
|
|
#include <QStringList>
|
|
|
|
#include <QHostAddress>
|
|
|
|
|
2015-09-04 14:37:01 +02:00
|
|
|
QT_FORWARD_DECLARE_CLASS(QJsonValue)
|
2015-08-10 22:46:01 +02:00
|
|
|
|
2015-09-05 17:25:05 +02:00
|
|
|
namespace RepoIndex {
|
|
|
|
|
2016-02-14 23:48:43 +01:00
|
|
|
enum class SignatureLevel;
|
|
|
|
|
2015-09-05 17:25:05 +02:00
|
|
|
// these are needed from the beginning and are initialized in the main()
|
|
|
|
extern bool useShSyntax;
|
|
|
|
extern const char *shchar;
|
2015-08-10 22:46:01 +02:00
|
|
|
|
|
|
|
class ConfigArgs
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
ConfigArgs(ApplicationUtilities::ArgumentParser &parser);
|
|
|
|
ApplicationUtilities::HelpArgument helpArg;
|
2015-08-19 02:13:28 +02:00
|
|
|
ApplicationUtilities::Argument buildOrderArg;
|
2016-02-20 03:00:34 +01:00
|
|
|
ApplicationUtilities::Argument addSourceOnlyDepsArg;
|
|
|
|
ApplicationUtilities::Argument requireSourcesArg;
|
2015-08-10 22:46:01 +02:00
|
|
|
ApplicationUtilities::Argument serverArg;
|
2015-09-05 17:25:05 +02:00
|
|
|
ApplicationUtilities::Argument upgradeLookupArg;
|
2015-08-19 02:13:28 +02:00
|
|
|
ApplicationUtilities::Argument mingwBundleArg;
|
2015-08-10 22:46:01 +02:00
|
|
|
ApplicationUtilities::Argument repoindexConfArg;
|
|
|
|
ApplicationUtilities::Argument rootdirArg;
|
|
|
|
ApplicationUtilities::Argument dbpathArg;
|
|
|
|
ApplicationUtilities::Argument pacmanConfArg;
|
2016-02-27 21:00:58 +01:00
|
|
|
ApplicationUtilities::Argument reposFromPacmanConfEnabled;
|
2015-08-10 22:46:01 +02:00
|
|
|
ApplicationUtilities::Argument websocketAddrArg;
|
|
|
|
ApplicationUtilities::Argument websocketPortArg;
|
|
|
|
ApplicationUtilities::Argument certFileArg;
|
|
|
|
ApplicationUtilities::Argument keyFileArg;
|
|
|
|
ApplicationUtilities::Argument insecureArg;
|
2015-08-19 02:13:28 +02:00
|
|
|
ApplicationUtilities::Argument aurArg;
|
|
|
|
ApplicationUtilities::Argument verboseArg;
|
|
|
|
ApplicationUtilities::Argument outputFileArg;
|
2015-09-04 14:37:01 +02:00
|
|
|
ApplicationUtilities::Argument targetDirArg;
|
|
|
|
ApplicationUtilities::Argument targetNameArg;
|
|
|
|
ApplicationUtilities::Argument targetFormatArg;
|
|
|
|
ApplicationUtilities::Argument iconThemesArg;
|
2015-09-21 22:16:19 +02:00
|
|
|
ApplicationUtilities::Argument defaultIconThemeArg;
|
|
|
|
ApplicationUtilities::Argument extraPackagesArg;
|
2016-01-06 02:08:24 +01:00
|
|
|
ApplicationUtilities::Argument cacheDirArg;
|
2016-02-12 01:05:08 +01:00
|
|
|
ApplicationUtilities::Argument storageDirArg;
|
2015-09-05 17:25:05 +02:00
|
|
|
ApplicationUtilities::Argument shSyntaxArg;
|
|
|
|
ApplicationUtilities::Argument repoArg;
|
2015-08-10 22:46:01 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
class Config;
|
|
|
|
|
|
|
|
class RepoEntry
|
|
|
|
{
|
|
|
|
friend class Config;
|
|
|
|
public:
|
2015-08-19 02:13:28 +02:00
|
|
|
RepoEntry();
|
2015-08-10 22:46:01 +02:00
|
|
|
const QString &name() const;
|
2016-02-14 23:48:43 +01:00
|
|
|
const QString &databasePath() const;
|
2015-08-19 02:13:28 +02:00
|
|
|
const QString &sourceDir() const;
|
|
|
|
const QString &packageDir() const;
|
2015-08-10 22:46:01 +02:00
|
|
|
const QStringList &servers() const;
|
2015-08-19 02:13:28 +02:00
|
|
|
const QStringList &upgradeSources() const;
|
2016-02-14 23:48:43 +01:00
|
|
|
SignatureLevel sigLevel() const;
|
2016-02-15 18:26:05 +01:00
|
|
|
ChronoUtilities::TimeSpan maxDatabaseAge() const;
|
2016-02-25 22:53:33 +01:00
|
|
|
bool isIgnored() const;
|
2015-08-10 22:46:01 +02:00
|
|
|
void load(const QJsonValue &jsonValue);
|
|
|
|
|
|
|
|
private:
|
|
|
|
QString m_name;
|
2015-08-19 02:13:28 +02:00
|
|
|
QString m_dataBaseFile;
|
|
|
|
QString m_sourceDir;
|
|
|
|
QString m_packageDir;
|
2015-08-10 22:46:01 +02:00
|
|
|
QStringList m_servers;
|
2015-08-19 02:13:28 +02:00
|
|
|
QStringList m_upgradeSources;
|
2016-02-14 23:48:43 +01:00
|
|
|
SignatureLevel m_sigLevel;
|
2016-02-15 18:26:05 +01:00
|
|
|
ChronoUtilities::TimeSpan m_maxDatabaseAge;
|
2016-02-25 22:53:33 +01:00
|
|
|
bool m_ignored;
|
2015-08-10 22:46:01 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
inline const QString &RepoEntry::name() const
|
|
|
|
{
|
|
|
|
return m_name;
|
|
|
|
}
|
|
|
|
|
2016-02-14 23:48:43 +01:00
|
|
|
inline const QString &RepoEntry::databasePath() const
|
2015-08-10 22:46:01 +02:00
|
|
|
{
|
2015-08-19 02:13:28 +02:00
|
|
|
return m_dataBaseFile;
|
2015-08-10 22:46:01 +02:00
|
|
|
}
|
|
|
|
|
2015-08-19 02:13:28 +02:00
|
|
|
inline const QString &RepoEntry::sourceDir() const
|
2015-08-10 22:46:01 +02:00
|
|
|
{
|
2015-08-19 02:13:28 +02:00
|
|
|
return m_sourceDir;
|
2015-08-10 22:46:01 +02:00
|
|
|
}
|
|
|
|
|
2015-08-19 02:13:28 +02:00
|
|
|
inline const QString &RepoEntry::packageDir() const
|
2015-08-10 22:46:01 +02:00
|
|
|
{
|
2015-08-19 02:13:28 +02:00
|
|
|
return m_packageDir;
|
2015-08-10 22:46:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
inline const QStringList &RepoEntry::servers() const
|
|
|
|
{
|
|
|
|
return m_servers;
|
|
|
|
}
|
|
|
|
|
2015-08-19 02:13:28 +02:00
|
|
|
inline const QStringList &RepoEntry::upgradeSources() const
|
|
|
|
{
|
|
|
|
return m_upgradeSources;
|
|
|
|
}
|
|
|
|
|
2016-02-14 23:48:43 +01:00
|
|
|
inline SignatureLevel RepoEntry::sigLevel() const
|
2015-08-19 02:13:28 +02:00
|
|
|
{
|
|
|
|
return m_sigLevel;
|
|
|
|
}
|
|
|
|
|
2016-02-15 18:26:05 +01:00
|
|
|
inline ChronoUtilities::TimeSpan RepoEntry::maxDatabaseAge() const
|
|
|
|
{
|
|
|
|
return m_maxDatabaseAge;
|
|
|
|
}
|
|
|
|
|
2016-02-25 22:53:33 +01:00
|
|
|
inline bool RepoEntry::isIgnored() const
|
|
|
|
{
|
|
|
|
return m_ignored;
|
|
|
|
}
|
|
|
|
|
2015-08-10 22:46:01 +02:00
|
|
|
class Config
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
Config();
|
|
|
|
|
|
|
|
const QString &alpmRootDir() const;
|
|
|
|
const QString &alpmDbPath() const;
|
|
|
|
const QString &pacmanConfFile() const;
|
2015-09-11 21:59:47 +02:00
|
|
|
const QString &cacheDir() const;
|
2016-02-15 18:26:05 +01:00
|
|
|
const QString &storageDir() const;
|
2015-08-10 22:46:01 +02:00
|
|
|
const QHostAddress &websocketServerListeningAddr() const;
|
|
|
|
quint16 websocketServerListeningPort() const;
|
|
|
|
const QString &serverCertFile() const;
|
|
|
|
const QString &serverKeyFile() const;
|
|
|
|
bool serverInsecure() const;
|
2016-02-27 21:00:58 +01:00
|
|
|
bool isServerCloseable() const;
|
|
|
|
void setServerCloseable(bool closeable);
|
2016-02-25 22:53:33 +01:00
|
|
|
bool isLocalDatabaseEnabled() const;
|
|
|
|
bool areReposFromPacmanConfEnabled() const;
|
2015-08-10 22:46:01 +02:00
|
|
|
const QList<RepoEntry> &repoEntries() const;
|
2015-08-19 02:13:28 +02:00
|
|
|
bool isAurEnabled() const;
|
|
|
|
bool isVerbose() const;
|
|
|
|
bool runServer() const;
|
2015-09-05 17:25:05 +02:00
|
|
|
const char *shSyntax() const;
|
2015-08-10 22:46:01 +02:00
|
|
|
|
|
|
|
void loadFromConfigFile(const QString &args);
|
|
|
|
void loadFromConfigFile(const ConfigArgs &args);
|
|
|
|
void loadFromArgs(const ConfigArgs &args);
|
2016-02-27 21:00:58 +01:00
|
|
|
void loadLocalOnlySetup();
|
2015-08-10 22:46:01 +02:00
|
|
|
|
|
|
|
private:
|
|
|
|
QString m_alpmRootDir;
|
|
|
|
QString m_alpmDbPath;
|
|
|
|
QString m_pacmanConfFile;
|
2015-09-11 21:59:47 +02:00
|
|
|
QString m_cacheDir;
|
2016-02-12 01:05:08 +01:00
|
|
|
QString m_storageDir;
|
2015-08-10 22:46:01 +02:00
|
|
|
|
|
|
|
QHostAddress m_websocketServerListeningAddr;
|
|
|
|
quint16 m_websocketServerListeningPort;
|
|
|
|
QString m_serverCertFile;
|
|
|
|
QString m_serverKeyFile;
|
|
|
|
bool m_serverInsecure;
|
2016-02-27 21:00:58 +01:00
|
|
|
bool m_serverCloseable;
|
2015-08-10 22:46:01 +02:00
|
|
|
|
|
|
|
QList<RepoEntry> m_repoEntries;
|
2016-02-25 22:53:33 +01:00
|
|
|
bool m_localEnabled;
|
|
|
|
bool m_reposFromPacmanConfEnabled;
|
2015-08-19 02:13:28 +02:00
|
|
|
bool m_aurEnabled;
|
|
|
|
bool m_verbose;
|
|
|
|
bool m_runServer;
|
2015-08-10 22:46:01 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2015-09-11 21:59:47 +02:00
|
|
|
inline const QString &Config::cacheDir() const
|
|
|
|
{
|
|
|
|
return m_cacheDir;
|
|
|
|
}
|
|
|
|
|
2016-02-15 18:26:05 +01:00
|
|
|
inline const QString &Config::storageDir() const
|
|
|
|
{
|
|
|
|
return m_storageDir;
|
|
|
|
}
|
|
|
|
|
2015-08-10 22:46:01 +02:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2016-02-27 21:00:58 +01:00
|
|
|
inline bool Config::isServerCloseable() const
|
|
|
|
{
|
|
|
|
return m_serverCloseable;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline void Config::setServerCloseable(bool closeable)
|
|
|
|
{
|
|
|
|
m_serverCloseable = closeable;
|
|
|
|
}
|
|
|
|
|
2016-02-25 22:53:33 +01:00
|
|
|
inline bool Config::isLocalDatabaseEnabled() const
|
|
|
|
{
|
|
|
|
return m_localEnabled;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline bool Config::areReposFromPacmanConfEnabled() const
|
2015-08-10 22:46:01 +02:00
|
|
|
{
|
2016-02-25 22:53:33 +01:00
|
|
|
return m_reposFromPacmanConfEnabled;
|
2015-08-10 22:46:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
inline const QList<RepoEntry> &Config::repoEntries() const
|
|
|
|
{
|
|
|
|
return m_repoEntries;
|
|
|
|
}
|
|
|
|
|
2015-08-19 02:13:28 +02:00
|
|
|
inline bool Config::isAurEnabled() const
|
|
|
|
{
|
|
|
|
return m_aurEnabled;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline bool Config::isVerbose() const
|
|
|
|
{
|
|
|
|
return m_verbose;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline bool Config::runServer() const
|
|
|
|
{
|
|
|
|
return m_runServer;
|
|
|
|
}
|
|
|
|
|
2015-08-10 22:46:01 +02:00
|
|
|
} // namespace Alpm
|
|
|
|
|
|
|
|
#endif // ALPM_CONFIG_H
|