hyprshell_core_lib/util/
version.rs

1use anyhow::Context;
2use semver::Version;
3use tracing::info;
4
5pub const MIN_VERSION: Version = Version::new(0, 42, 0);
6
7pub fn check_version(version: anyhow::Result<String>) -> anyhow::Result<()> {
8    if let Ok(version) = version {
9        info!(
10            "Starting hyprshell {} in {} mode on hyprland {}",
11            env!("CARGO_PKG_VERSION"),
12            if cfg!(debug_assertions) {
13                "debug"
14            } else {
15                "release"
16            },
17            version,
18        );
19        let parsed_version =
20            Version::parse(&version).context("Unable to parse hyprland Version")?;
21        if parsed_version.lt(&MIN_VERSION) {
22            Err(anyhow::anyhow!(
23                "hyprland version {} is too old or unknown, please update to at least {}",
24                parsed_version,
25                MIN_VERSION
26            ))
27        } else {
28            Ok(())
29        }
30    } else {
31        Err(anyhow::anyhow!("Unable to get hyprland version"))
32    }
33}