diff --git a/source/src/services.cpp b/source/src/services.cpp index 114a865..95bf1ea 100644 --- a/source/src/services.cpp +++ b/source/src/services.cpp @@ -114,12 +114,17 @@ namespace dropshell template_info tinfo = gTemplateManager().get_template_info(service.template_name); if (!tinfo.is_set()) { - error << "Template specified '" << service.template_name << "' could not be found" << std::endl; - return LocalServiceInfo(); + // Template might be available from registry but not cached yet + // Don't fail here - let the install command handle downloading if needed + warning << "Template '" << service.template_name << "' not found locally, may need to download from registry" << std::endl; + // Set template_name but leave local_template_path empty + // The install command will try to get the template again + } + else + { + // find the template path + service.local_template_path = tinfo.local_template_path(); } - - // find the template path - service.local_template_path = tinfo.local_template_path(); { // set the user. auto it = variables.find("SSH_USER"); @@ -140,12 +145,17 @@ namespace dropshell auto it = variables.find("TEMPLATE_HASH"); if (it == variables.end()) error << "Variable TEMPLATE_HASH not found in the service " << filenames::template_info_env << std::endl; - else + else if (tinfo.is_set()) { uint64_t service_template_hash = std::stoull(it->second); service.service_template_hash_match = (service_template_hash == tinfo.hash()); //debug << "Service template hash: " << service_template_hash << " == " << tinfo.hash() << std::endl; } + else + { + // Template not available yet, can't check hash + service.service_template_hash_match = false; + } } return service;