Aktualizr
C++ SOTA Client
All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
packagemanagerfactory.cc
1 #include "package_manager/packagemanagerfactory.h"
2 #include "package_manager/packagemanagerfake.h"
3 
4 #ifdef BUILD_OSTREE
5 #include "package_manager/ostreemanager.h"
6 #ifdef BUILD_DOCKERAPP
7 #include "package_manager/dockerappmanager.h"
8 #endif
9 #endif
10 
11 #ifdef BUILD_DEB
12 #include "package_manager/debianmanager.h"
13 #endif
14 
15 #if defined(ANDROID)
16 #include "package_manager/androidmanager.h"
17 #endif
18 
19 #include "logging/logging.h"
20 
21 std::shared_ptr<PackageManagerInterface> PackageManagerFactory::makePackageManager(
22  const PackageConfig& pconfig, const BootloaderConfig& bconfig, const std::shared_ptr<INvStorage>& storage,
23  const std::shared_ptr<HttpInterface>& http) {
24  switch (pconfig.type) {
25  case PackageManager::kOstree:
26 #ifdef BUILD_OSTREE
27  return std::make_shared<OstreeManager>(pconfig, bconfig, storage, http);
28 #else
29  throw std::runtime_error("aktualizr was compiled without OStree support!");
30 #endif
31  case PackageManager::kDebian:
32 #ifdef BUILD_DEB
33  return std::make_shared<DebianManager>(pconfig, bconfig, storage, http);
34 #else
35  throw std::runtime_error("aktualizr was compiled without debian packages support!");
36 #endif
37  case PackageManager::kAndroid:
38 #if defined(ANDROID)
39  return std::make_shared<AndroidManager>(pconfig, bconfig, storage, http);
40 #else
41  throw std::runtime_error("aktualizr was compiled without android support!");
42 #endif
43  case PackageManager::kOstreeDockerApp:
44 #if defined(BUILD_DOCKERAPP) && defined(BUILD_OSTREE)
45  return std::make_shared<DockerAppManager>(pconfig, bconfig, storage, http);
46 #else
47  throw std::runtime_error("aktualizr was compiled without ostree+docker-app support!");
48 #endif
49  case PackageManager::kNone:
50  return std::make_shared<PackageManagerFake>(pconfig, bconfig, storage, http);
51  default:
52  LOG_ERROR << "Unrecognized package manager type: " << static_cast<int>(pconfig.type);
53  return std::shared_ptr<PackageManagerInterface>(); // NULL-equivalent
54  }
55 }
PackageConfig
Definition: packagemanagerconfig.h:13
BootloaderConfig
Definition: bootloader_config.h:11