reactive_graph/tooling/releases/
release.rs

1use serde::Serialize;
2use tabled::Tabled;
3
4pub const TARGET_TRIPLE: &str = env!("VERGEN_CARGO_TARGET_TRIPLE");
5
6#[derive(Clone, Debug, Serialize, Tabled)]
7pub struct Release {
8    #[tabled(rename = "Release Name")]
9    pub name: String,
10    #[tabled(rename = "Version")]
11    pub version: String,
12    #[tabled(rename = "Date")]
13    pub date: String,
14    #[tabled(rename = "Asset Name")]
15    pub asset_name: String,
16    #[tabled(rename = "Download URL")]
17    pub download_url: String,
18}
19
20impl From<&self_update::update::Release> for Release {
21    fn from(release: &self_update::update::Release) -> Self {
22        let (asset_name, download_url) = match release.asset_for(TARGET_TRIPLE, None) {
23            Some(release_asset) => (release_asset.name, release_asset.download_url),
24            None => ("Not available".to_string(), String::new()),
25        };
26        Release {
27            name: release.name.clone(),
28            version: release.version.clone(),
29            date: release.date[0..10].to_string(),
30            asset_name,
31            download_url,
32        }
33    }
34}