1 #include "package_manager/packagemanagerfactory.h"
2 #include "package_manager/packagemanagerfake.h"
5 #include "package_manager/ostreemanager.h"
7 #include "package_manager/dockerappmanager.h"
12 #include "package_manager/debianmanager.h"
16 #include "package_manager/androidmanager.h"
19 #include "logging/logging.h"
21 std::shared_ptr<PackageManagerInterface> PackageManagerFactory::makePackageManager(
23 const std::shared_ptr<HttpInterface>& http) {
24 switch (pconfig.type) {
25 case PackageManager::kOstree:
27 return std::make_shared<OstreeManager>(pconfig, bconfig, storage, http);
29 throw std::runtime_error(
"aktualizr was compiled without OStree support!");
31 case PackageManager::kDebian:
33 return std::make_shared<DebianManager>(pconfig, bconfig, storage, http);
35 throw std::runtime_error(
"aktualizr was compiled without debian packages support!");
37 case PackageManager::kAndroid:
39 return std::make_shared<AndroidManager>(pconfig, bconfig, storage, http);
41 throw std::runtime_error(
"aktualizr was compiled without android support!");
43 case PackageManager::kOstreeDockerApp:
44 #if defined(BUILD_DOCKERAPP) && defined(BUILD_OSTREE)
45 return std::make_shared<DockerAppManager>(pconfig, bconfig, storage, http);
47 throw std::runtime_error(
"aktualizr was compiled without ostree+docker-app support!");
49 case PackageManager::kNone:
50 return std::make_shared<PackageManagerFake>(pconfig, bconfig, storage, http);
52 LOG_ERROR <<
"Unrecognized package manager type: " << static_cast<int>(pconfig.type);
53 return std::shared_ptr<PackageManagerInterface>();