#ifndef ALPM_CONFIG_H #define ALPM_CONFIG_H #include #include #include #include #include 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 &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