29 if (overrideString ==
nullptr || *overrideString ==
'\0') {
33 auto split = [](std::string_view
str,
char delim) {
34 std::vector<std::string_view>
result;
35 std::string_view::size_type
start = 0;
36 auto end =
str.find(delim);
37 while (
end != std::string_view::npos) {
52 std::vector<OverrideServiceSpec> overrides;
54 "DPL(_DRIVER)_OVERRIDE_SERVICES must be a comma separated list of service names and their enabled/disabled status. "
55 "The format is <service name>:<enable/disable/1/0>"
56 "Error while parsing: " +
57 std::string(overrideString);
58 auto overrideList =
split(overrideString,
',');
59 for (
auto& overrideStr : overrideList) {
60 auto overrideParts =
split(overrideStr,
':');
61 if (overrideParts.size() != 2) {
62 throw std::runtime_error(
msg.data());
65 std::string serviceName{overrideParts[0]};
66 if (overrideParts[1] ==
"1") {
68 }
else if (overrideParts[1] ==
"0") {
70 }
else if (overrideParts[1] ==
"enable") {
72 }
else if (overrideParts[1] ==
"disable") {
75 throw std::runtime_error(
msg.data());
77 if (std::find_if(overrides.begin(), overrides.end(),
findOverrideByName(serviceName)) != overrides.end()) {
78 throw std::runtime_error(
"Duplicate service name in DPL(_DRIVER)_OVERRIDE_SERVICES: " + serviceName);
83 LOG(detail) <<
"The following services will be overridden by the DPL_OVERRIDE_SERVICES environment variable:";
84 for (
auto&
override : overrides) {
85 LOG(detail) <<
override.name <<
": " <<
override.active;