eoka-server 0.5.0

Shared browser runtime and sidecar process for eoka browser automation
Documentation
use std::{env, fs, path::PathBuf};

fn main() {
    let manifest =
        PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").expect("Cargo manifest directory"))
            .join("Cargo.toml");
    println!("cargo:rerun-if-changed={}", manifest.display());
    let manifest: toml::Value = fs::read_to_string(manifest)
        .expect("read server manifest")
        .parse()
        .expect("parse server manifest");
    let dependency = &manifest["dependencies"]["eoka"];
    let requirement = dependency
        .as_str()
        .or_else(|| dependency.get("version").and_then(toml::Value::as_str))
        .expect("server eoka dependency version");
    let version = requirement
        .strip_prefix('=')
        .map(str::trim)
        .filter(|version| !version.is_empty() && !version.contains(',') && !version.contains(' '))
        .expect("server eoka dependency must use one exact version for honest runtime metadata");
    println!("cargo:rustc-env=EOKA_CORE_VERSION={version}");
}