ontv 0.1.0

A rich desktop application for tracking tv shows
Documentation
use anyhow::{Context, Result};

fn main() -> Result<()> {
    if cfg!(target_os = "windows") {
        use winres::VersionInfo::*;

        let mut res = winres::WindowsResource::new();
        res.set_icon("assets/icon.ico");

        if let Some((version, info)) = file_version() {
            res.set("FileVersion", &version);
            res.set("ProductVersion", &version);
            res.set_version_info(FILEVERSION, info);
            res.set_version_info(PRODUCTVERSION, info);
        }

        res.compile().context("compiling resorces")?;
    }

    Ok(())
}

fn file_version() -> Option<(String, u64)> {
    let version = match std::env::var("ONTV_FILE_VERSION") {
        Ok(version) => version,
        Err(_) => return None,
    };

    let mut info = 0u64;

    let mut it = version.split('.');

    info |= it.next()?.parse().unwrap_or(0) << 48;
    info |= it.next()?.parse().unwrap_or(0) << 32;
    info |= it.next()?.parse().unwrap_or(0) << 16;
    info |= match it.next() {
        Some(n) => n.parse().unwrap_or(0),
        None => 0,
    };

    Some((version, info))
}