int SsuRepoManager::add(QString repo, QString repoUrl){ SsuCoreConfig *ssuSettings = SsuCoreConfig::instance(); // adding a repo is a noop when device is in update mode... if ((ssuSettings->deviceMode() & Ssu::UpdateMode) == Ssu::UpdateMode) return -1; // ... or in AppInstallMode if ((ssuSettings->deviceMode() & Ssu::AppInstallMode) == Ssu::AppInstallMode) return -1; if (repoUrl == ""){ // just enable a repository which has URL in repos.ini QStringList enabledRepos; if (ssuSettings->contains("enabled-repos")) enabledRepos = ssuSettings->value("enabled-repos").toStringList(); enabledRepos.append(repo); enabledRepos.removeDuplicates(); ssuSettings->setValue("enabled-repos", enabledRepos); } else ssuSettings->setValue("repository-urls/" + repo, repoUrl); ssuSettings->sync(); return 0; }
int SsuRepoManager::remove(QString repo){ SsuCoreConfig *ssuSettings = SsuCoreConfig::instance(); // removing a repo is a noop when device is in update mode... if ((ssuSettings->deviceMode() & Ssu::UpdateMode) == Ssu::UpdateMode) return -1; // ... or AppInstallMode if ((ssuSettings->deviceMode() & Ssu::AppInstallMode) == Ssu::AppInstallMode) return -1; if (ssuSettings->contains("repository-urls/" + repo)) ssuSettings->remove("repository-urls/" + repo); if (ssuSettings->contains("enabled-repos")){ QStringList enabledRepos = ssuSettings->value("enabled-repos").toStringList(); if (enabledRepos.contains(repo)){ enabledRepos.removeAll(repo); enabledRepos.removeDuplicates(); ssuSettings->setValue("enabled-repos", enabledRepos); } } ssuSettings->sync(); return 0; }
// @todo the non-device specific repository resolving should move from deviceInfo to repomanager QStringList SsuRepoManager::repos(bool rnd, SsuDeviceInfo &deviceInfo, int filter){ QStringList result; // read the adaptation specific repositories, as well as the default // repositories; default repos are read through deviceInfo as an // adaptation is allowed to disable core repositories result = deviceInfo.repos(rnd, filter); // read the repositories of the available features. While devices have // a default list of features to be installed those are only relevant // for bootstrapping, so this code just operates on installed features SsuFeatureManager featureManager; result.append(featureManager.repos(rnd, filter)); // read user-defined repositories from ssu.ini. This step needs to // happen at the end, after all other required repositories are // added already // TODO: in strict mode, filter the repository list from there SsuCoreConfig *ssuSettings = SsuCoreConfig::instance(); bool updateMode = false; bool appInstallMode = false; if ((ssuSettings->deviceMode() & Ssu::UpdateMode) == Ssu::UpdateMode) updateMode = true; if ((ssuSettings->deviceMode() & Ssu::AppInstallMode) == Ssu::AppInstallMode){ updateMode = true; appInstallMode = true; } if (filter == Ssu::NoFilter || filter == Ssu::UserFilter){ // user defined repositories, or ones overriding URLs for default ones // -> in update mode we need to check for each of those if it already // exists. If it exists, keep it, if it does not, disable it ssuSettings->beginGroup("repository-urls"); QStringList repoUrls = ssuSettings->allKeys(); ssuSettings->endGroup(); if (updateMode){ foreach(const QString &key, repoUrls){ if (result.contains(key)) result.append(key); } } else {
QStringList SsuRepoManager::repos(int filter){ SsuDeviceInfo deviceInfo; SsuCoreConfig *ssuSettings = SsuCoreConfig::instance(); bool rnd = false; if ((ssuSettings->deviceMode() & Ssu::RndMode) == Ssu::RndMode) rnd = true; return repos(rnd, deviceInfo, filter); }
int Ssu::deviceMode(){ SsuCoreConfig *settings = SsuCoreConfig::instance(); return settings->deviceMode(); }