Trait self_update::update::ReleaseUpdate

source ·
pub trait ReleaseUpdate {
Show 19 methods // Required methods fn get_latest_release(&self) -> Result<Release>; fn get_release_version(&self, ver: &str) -> Result<Release>; fn current_version(&self) -> String; fn target(&self) -> String; fn target_version(&self) -> Option<String>; fn bin_name(&self) -> String; fn bin_install_path(&self) -> PathBuf; fn bin_path_in_archive(&self) -> String; fn show_download_progress(&self) -> bool; fn show_output(&self) -> bool; fn no_confirm(&self) -> bool; fn progress_template(&self) -> String; fn progress_chars(&self) -> String; fn auth_token(&self) -> Option<String>; // Provided methods fn identifier(&self) -> Option<String> { ... } fn verifying_keys(&self) -> &[[u8; 32]] { ... } fn api_headers(&self, auth_token: &Option<String>) -> Result<HeaderMap> { ... } fn update(&self) -> Result<Status> { ... } fn update_extended(&self) -> Result<UpdateStatus> { ... }
}
Expand description

Updates to a specified or latest release

Required Methods§

source

fn get_latest_release(&self) -> Result<Release>

Fetch details of the latest release from the backend

source

fn get_release_version(&self, ver: &str) -> Result<Release>

Fetch details of the release matching the specified version

source

fn current_version(&self) -> String

Current version of binary being updated

source

fn target(&self) -> String

Target platform the update is being performed for

source

fn target_version(&self) -> Option<String>

Target version optionally specified for the update

source

fn bin_name(&self) -> String

Name of the binary being updated

source

fn bin_install_path(&self) -> PathBuf

Installation path for the binary being updated

source

fn bin_path_in_archive(&self) -> String

Path of the binary to be extracted from release package

source

fn show_download_progress(&self) -> bool

Flag indicating if progress information shall be output when downloading a release

source

fn show_output(&self) -> bool

Flag indicating if process informative messages shall be output

source

fn no_confirm(&self) -> bool

Flag indicating if the user shouldn’t be prompted to confirm an update

source

fn progress_template(&self) -> String

source

fn progress_chars(&self) -> String

source

fn auth_token(&self) -> Option<String>

Authorisation token for communicating with backend

Provided Methods§

source

fn identifier(&self) -> Option<String>

Optional identifier of determining the asset among multiple matches

source

fn verifying_keys(&self) -> &[[u8; 32]]

ed25519ph verifying keys to validate a download’s authenticy

source

fn api_headers(&self, auth_token: &Option<String>) -> Result<HeaderMap>

Construct a header with an authorisation entry if an auth token is provided

source

fn update(&self) -> Result<Status>

Display release information and update the current binary to the latest release, pending confirmation from the user

Examples found in repository?
examples/gitlab.rs (line 34)
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
fn run() -> Result<(), Box<dyn ::std::error::Error>> {
    let releases = self_update::backends::gitlab::ReleaseList::configure()
        .repo_owner("jaemk")
        .repo_name("self_update")
        .build()?
        .fetch()?;
    println!("found releases:");
    println!("{:#?}\n", releases);

    let status = self_update::backends::gitlab::Update::configure()
        .repo_owner("jaemk")
        .repo_name("self_update")
        .bin_name("github")
        .show_download_progress(true)
        //.target_version_tag("v9.9.10")
        //.show_output(false)
        //.no_confirm(true)
        //
        // For private repos, you will need to provide an auth token
        // **Make sure not to bake the token into your app**; it is recommended
        // you obtain it via another mechanism, such as environment variables
        // or prompting the user for input
        //.auth_token(env!("DOWNLOAD_AUTH_TOKEN"))
        .current_version(cargo_crate_version!())
        .build()?
        .update()?;
    println!("Update status: `{}`!", status.version());
    Ok(())
}
More examples
Hide additional examples
examples/github.rs (line 49)
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
fn run() -> Result<(), Box<dyn ::std::error::Error>> {
    let mut rel_builder = self_update::backends::github::ReleaseList::configure();

    #[cfg(feature = "signatures")]
    rel_builder.repo_owner("Kijewski");
    #[cfg(not(feature = "signatures"))]
    rel_builder.repo_owner("jaemk");

    let releases = rel_builder.repo_name("self_update").build()?.fetch()?;
    println!("found releases:");
    println!("{:#?}\n", releases);

    let mut status_builder = self_update::backends::github::Update::configure();

    #[cfg(feature = "signatures")]
    status_builder
        .repo_owner("Kijewski")
        .verifying_keys([*include_bytes!("github-public.key")]);
    #[cfg(not(feature = "signatures"))]
    status_builder.repo_owner("jaemk");

    let status = status_builder
        .repo_name("self_update")
        .bin_name("github")
        .show_download_progress(true)
        //.target_version_tag("v9.9.10")
        //.show_output(false)
        //.no_confirm(true)
        //
        // For private repos, you will need to provide a GitHub auth token
        // **Make sure not to bake the token into your app**; it is recommended
        // you obtain it via another mechanism, such as environment variables
        // or prompting the user for input
        //.auth_token(env!("DOWNLOAD_AUTH_TOKEN"))
        .current_version(cargo_crate_version!())
        .build()?
        .update()?;
    println!("Update status: `{}`!", status.version());
    Ok(())
}
source

fn update_extended(&self) -> Result<UpdateStatus>

Same as update, but returns UpdateStatus.

Implementors§

source§

impl ReleaseUpdate for self_update::backends::gitea::Update

source§

impl ReleaseUpdate for self_update::backends::github::Update

source§

impl ReleaseUpdate for self_update::backends::gitlab::Update

source§

impl ReleaseUpdate for self_update::backends::s3::Update