Aktualizr
C++ SOTA Client
All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
packagemanagerconfig.cc
1 #include "package_manager/packagemanagerconfig.h"
2 
3 #include <boost/algorithm/string/classification.hpp>
4 #include <boost/algorithm/string/join.hpp>
5 #include <boost/algorithm/string/split.hpp>
6 #include <boost/log/trivial.hpp>
7 
8 std::ostream& operator<<(std::ostream& os, PackageManager pm) {
9  std::string pm_str;
10  switch (pm) {
11  case PackageManager::kOstree:
12  pm_str = "ostree";
13  break;
14  case PackageManager::kDebian:
15  pm_str = "debian";
16  break;
17  case PackageManager::kOstreeDockerApp:
18  pm_str = "ostree+docker-app";
19  break;
20  case PackageManager::kNone:
21  default:
22  pm_str = "none";
23  break;
24  }
25  os << '"' << pm_str << '"';
26  return os;
27 }
28 
29 void PackageConfig::updateFromPropertyTree(const boost::property_tree::ptree& pt) {
30  CopyFromConfig(type, "type", pt);
31  CopyFromConfig(os, "os", pt);
32  CopyFromConfig(sysroot, "sysroot", pt);
33  CopyFromConfig(ostree_server, "ostree_server", pt);
34  CopyFromConfig(packages_file, "packages_file", pt);
35  CopyFromConfig(fake_need_reboot, "fake_need_reboot", pt);
36 #ifdef BUILD_DOCKERAPP
37  CopyFromConfig(docker_apps_root, "docker_apps_root", pt);
38  CopyFromConfig(docker_compose_bin, "docker_compose_bin", pt);
39  std::string val;
40  CopyFromConfig(val, "docker_apps", pt);
41  if (val.length() > 0) {
42  // token_compress_on allows lists like: "foo,bar", "foo, bar", or "foo bar"
43  boost::split(docker_apps, val, boost::is_any_of(", "), boost::token_compress_on);
44  CopyFromConfig(docker_app_params, "docker_app_params", pt);
45  CopyFromConfig(docker_app_bin, "docker_app_bin", pt);
46  }
47 #endif
48 }
49 
50 void PackageConfig::writeToStream(std::ostream& out_stream) const {
51  writeOption(out_stream, type, "type");
52  writeOption(out_stream, os, "os");
53  writeOption(out_stream, sysroot, "sysroot");
54  writeOption(out_stream, ostree_server, "ostree_server");
55  writeOption(out_stream, packages_file, "packages_file");
56  writeOption(out_stream, fake_need_reboot, "fake_need_reboot");
57 #ifdef BUILD_DOCKERAPP
58  writeOption(out_stream, boost::algorithm::join(docker_apps, ","), "docker_apps");
59  writeOption(out_stream, docker_apps_root, "docker_apps_root");
60  writeOption(out_stream, docker_app_params, "docker_app_params");
61  writeOption(out_stream, docker_app_bin, "docker_app_bin");
62  writeOption(out_stream, docker_compose_bin, "docker_compose_bin");
63 #endif
64 }