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§
sourcefn get_latest_release(&self) -> Result<Release>
fn get_latest_release(&self) -> Result<Release>
Fetch details of the latest release from the backend
sourcefn get_release_version(&self, ver: &str) -> Result<Release>
fn get_release_version(&self, ver: &str) -> Result<Release>
Fetch details of the release matching the specified version
sourcefn current_version(&self) -> String
fn current_version(&self) -> String
Current version of binary being updated
sourcefn target_version(&self) -> Option<String>
fn target_version(&self) -> Option<String>
Target version optionally specified for the update
sourcefn bin_install_path(&self) -> PathBuf
fn bin_install_path(&self) -> PathBuf
Installation path for the binary being updated
sourcefn bin_path_in_archive(&self) -> String
fn bin_path_in_archive(&self) -> String
Path of the binary to be extracted from release package
sourcefn show_download_progress(&self) -> bool
fn show_download_progress(&self) -> bool
Flag indicating if progress information shall be output when downloading a release
sourcefn show_output(&self) -> bool
fn show_output(&self) -> bool
Flag indicating if process informative messages shall be output
sourcefn no_confirm(&self) -> bool
fn no_confirm(&self) -> bool
Flag indicating if the user shouldn’t be prompted to confirm an update
fn progress_template(&self) -> String
fn progress_chars(&self) -> String
sourcefn auth_token(&self) -> Option<String>
fn auth_token(&self) -> Option<String>
Authorisation token for communicating with backend
Provided Methods§
sourcefn identifier(&self) -> Option<String>
fn identifier(&self) -> Option<String>
Optional identifier of determining the asset among multiple matches
sourcefn verifying_keys(&self) -> &[[u8; 32]]
fn verifying_keys(&self) -> &[[u8; 32]]
ed25519ph verifying keys to validate a download’s authenticy
sourcefn api_headers(&self, auth_token: &Option<String>) -> Result<HeaderMap>
fn api_headers(&self, auth_token: &Option<String>) -> Result<HeaderMap>
Construct a header with an authorisation entry if an auth token is provided
sourcefn update(&self) -> Result<Status>
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?
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
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(())
}
sourcefn update_extended(&self) -> Result<UpdateStatus>
fn update_extended(&self) -> Result<UpdateStatus>
Same as update
, but returns UpdateStatus
.