diff --git a/src/services.cpp b/src/services.cpp index 94dee8d..02e0ee6 100644 --- a/src/services.cpp +++ b/src/services.cpp @@ -226,10 +226,22 @@ void get_all_service_env_vars(const std::string &server_name, const std::string all_env_vars.merge(env_vars); } + // determine template name. + auto it = all_env_vars.find("TEMPLATE"); + if (it == all_env_vars.end()) { + std::cerr << "Error: TEMPLATE variable not defined in service " << service_name << " on server " << server_name << std::endl; + return; + } + std::string template_name = it->second; + template_info tinfo; + if (!get_template_info(template_name, tinfo)) { + std::cerr << "Error: Template '" << template_name << "' not found" << std::endl; + return; + } + { // load _default.env from the template on this machine - gets overridden by service.env std::map env_vars; - auto service_info = get_service_info(server_name, service_name); - std::string defaultenvpath = service_info.local_template_path + "/_default.env"; + std::string defaultenvpath = tinfo.local_template_path + "/_default.env"; if (std::filesystem::exists(defaultenvpath)) { envmanager env_manager(defaultenvpath); env_manager.load();