#ifndef ALPM_CONFIG_H #define ALPM_CONFIG_H #include #include #include #include #include QT_FORWARD_DECLARE_CLASS(QJsonValue) namespace RepoIndex { enum class SignatureLevel : unsigned int; // these are needed from the beginning and are initialized in the main() extern bool useShSyntax; extern const char *shchar; class ConfigArgs { public: ConfigArgs(CppUtilities::ArgumentParser &parser); CppUtilities::HelpArgument helpArg; CppUtilities::Argument packagesArg; CppUtilities::Argument buildOrderArg; CppUtilities::Argument addSourceOnlyDepsArg; CppUtilities::Argument requireSourcesArg; CppUtilities::Argument serverArg; CppUtilities::Argument repoNameArg; CppUtilities::Argument upgradeLookupArg; CppUtilities::Argument mingwBundleArg; CppUtilities::Argument repoindexConfArg; CppUtilities::Argument rootdirArg; CppUtilities::Argument dbpathArg; CppUtilities::Argument pacmanConfArg; CppUtilities::Argument reposFromPacmanConfEnabled; CppUtilities::Argument websocketAddrArg; CppUtilities::Argument websocketPortArg; CppUtilities::Argument certFileArg; CppUtilities::Argument keyFileArg; CppUtilities::Argument insecureArg; CppUtilities::Argument aurArg; CppUtilities::Argument verboseArg; CppUtilities::Argument outputFileArg; CppUtilities::Argument targetDirArg; CppUtilities::Argument targetNameArg; CppUtilities::Argument targetFormatArg; CppUtilities::Argument iconThemesArg; CppUtilities::Argument defaultIconThemeArg; CppUtilities::Argument extraPackagesArg; CppUtilities::Argument qtPluginsArg; CppUtilities::Argument cacheDirArg; CppUtilities::Argument storageDirArg; CppUtilities::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; CppUtilities::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; CppUtilities::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 CppUtilities::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 &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 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 &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