use super::WebServerBackend;
use crate::brew::Brew;
use crate::config::Config;
use crate::daemon::ServiceSpec;
use crate::state::{Backend, Server, State, Vhost};
use anyhow::{bail, Result};
pub struct Ols;
impl WebServerBackend for Ols {
fn id(&self) -> Backend {
Backend::Ols
}
fn formula(&self) -> &'static str {
"openlitespeed"
}
fn ensure_installed(&self, brew: &Brew) -> Result<()> {
if brew.is_installed(self.formula()) {
return Ok(());
}
if !brew.is_installed("pkgconf") && !brew.is_installed("pkg-config") {
brew.install("pkg-config")?;
}
brew.ensure_tap("puleeno/openlitespeed")?;
brew.trust_tap("puleeno/openlitespeed");
brew.install(self.formula())?;
Ok(())
}
fn render(
&self,
_server: &Server,
_vhosts: &[&Vhost],
_state: &State,
_cfg: &Config,
_brew: &Brew,
) -> Result<()> {
bail!("{}", UNSUPPORTED)
}
fn validate(&self, _server: &Server, _brew: &Brew) -> Result<()> {
bail!("{}", UNSUPPORTED)
}
fn reload(&self, _server: &Server, _brew: &Brew) -> Result<()> {
bail!("{}", UNSUPPORTED)
}
fn service_spec(&self, _server: &Server, _brew: &Brew) -> Result<ServiceSpec> {
bail!("{}", UNSUPPORTED)
}
}
const UNSUPPORTED: &str = "OpenLiteSpeed isn't available on macOS: the only Homebrew tap \
(puleeno/openlitespeed) fails to build its admin_php dependency against the Tahoe SDK. \
Use caddy, apache, or nginx. See backends/ols.rs for details.";