vig 0.5.0

Git TUI side-by-side diff viewer
use self_update::cargo_crate_version;

const _: () = assert!(include_bytes!("../zipsign.pub").len() == 32);

pub fn run() -> anyhow::Result<()> {
    let updater = self_update::backends::github::Update::configure()
        .repo_owner("td72")
        .repo_name("vig")
        .bin_name("vig")
        .identifier("vig-")
        .show_download_progress(true)
        .current_version(cargo_crate_version!())
        .verifying_keys([*include_bytes!("../zipsign.pub")])
        .build()?;

    match updater.update() {
        Ok(status) => {
            if status.updated() {
                println!("Updated to version: {}", status.version());
            } else {
                println!("Already up to date (v{}).", status.version());
            }
            Ok(())
        }
        Err(e) => {
            let msg = e.to_string().to_lowercase();
            if msg.contains("rate limit") {
                eprintln!("GitHub API rate limit exceeded. Please try again later.");
            } else if msg.contains("could not resolve")
                || msg.contains("failed to connect")
                || msg.contains("connection")
            {
                eprintln!("Failed to connect to GitHub. Please check your internet connection.");
            } else {
                eprintln!("Update failed: {e}");
            }
            Err(e.into())
        }
    }
}