pub const ENV_HOST_SERVICE_SOCKET: &str = "GESTALT_HOST_SERVICE_SOCKET";
pub const ENV_HOST_SERVICE_TOKEN: &str = "GESTALT_HOST_SERVICE_TOKEN";
pub const ENV_HOST_SERVICES: &str = "GESTALT_HOST_SERVICES";
pub const HOST_SERVICE_BINDING_HEADER: &str = "x-gestalt-host-binding";
pub const ENV_PROVIDER_SOCKET: &str = "GESTALT_PROVIDER_SOCKET";
pub const ENV_PROVIDER_PARENT_PID: &str = "GESTALT_APP_PARENT_PID";
pub const ENV_WRITE_CATALOG: &str = "GESTALT_APP_WRITE_CATALOG";
pub const ENV_PROVIDER_NAME: &str = "GESTALT_APP_NAME";
pub const CURRENT_PROTOCOL_VERSION: i32 = 5;
pub(crate) fn host_service_configured(service: &str) -> Result<(), String> {
let Ok(configured) = std::env::var(ENV_HOST_SERVICES) else {
return Ok(());
};
if configured.is_empty() {
return Ok(());
}
if configured
.split(',')
.map(str::trim)
.filter(|name| !name.is_empty())
.any(|name| name == service)
{
return Ok(());
}
Err(format!(
"{service}: host service is not configured ({ENV_HOST_SERVICES}={configured})"
))
}