#update #notifier #notify #informer #cli

tiny_update_notifier

Tiny update notifier utility for rust cli programs

8 stable releases

2.2.0 Feb 18, 2023
2.1.0 Jan 4, 2023
2.0.1 Jan 1, 2023
1.1.1 Dec 31, 2022
1.0.1 Dec 31, 2022

#4 in #notifier


Used in ls-interactive

MIT license

15KB
174 lines

🔔 Tiny Update Notifier 🔔

GitHub Version

License: MIT Maintenance

Tiny update notifier utility for rust cli programs


Checks for update if more than 24h have passed since the last check (Customizable),

Then pops up a notification if a new version was found 📢

supports crates.io and github releases

App Screenshot

Installation

Install tiny_update_notifier using Cargo

  cargo add tiny_update_notifier

Usage

Multi-threaded / Non-blocking :
// check on crates.io
tiny_update_notifier::check_cratesIO(pkg_version, pkg_name);

// check on github releases
tiny_update_notifier::check_github(pkg_version, pkg_name, pkg_repo_url);
Single-threaded / Blocking
tiny_update_notifier::Notifier::new(
    tiny_update_notifier::Source,
    pkg_version,
    pkg_name,
    pkg_repo_url
)
.interval(Duration) //Optional, default is 24h
.run();

Examples

// Spawns a thread to check for updates on Crates.io and notify user if there is a new version available.
use tiny_update_notifier::check_cratesIO;

fn main() {
    check_cratesIO(
        env!("CARGO_PKG_VERSION"),
        env!("CARGO_PKG_NAME"),
    );
}
// Spawns a thread to check for updates on GitHub Releases and notify user if there is a new version available.
use tiny_update_notifier::check_github;

fn main() {
    check_github(
        env!("CARGO_PKG_VERSION"),
        env!("CARGO_PKG_NAME"),
        env!("CARGO_PKG_REPOSITORY"),
    );
}
// Equivalent to check_github, except the interval is changed to 1 week
use std::{thread, time::Duration};
use tiny_update_notifier::{Notifier, Source};

fn main() {
    thread::spawn(|| {
        Notifier::new(
            Source::GitHub,
            env!("CARGO_PKG_VERSION"),
            env!("CARGO_PKG_NAME"),
            env!("CARGO_PKG_REPOSITORY"),
        )
        .interval(Duration::from_secs(60 * 60 * 24 * 7))
        .run();
    });
}

Used by https://github.com/Araxeus/ls-interactive/

Dependencies

~0.7–25MB
~348K SLoC