diff --git a/src/main.rs b/src/main.rs index 555b843..67c6241 100644 --- a/src/main.rs +++ b/src/main.rs @@ -34,7 +34,7 @@ async fn main() -> Result<(), gt_tool::Error> { let releases = gt_tool::api::release::list_releases(&client, &args.gitea_url, &args.repo).await?; for release in releases { - println!("{:?}", release); + println!("{}", release); } } gt_tool::cli::Commands::CreateRelease { diff --git a/src/structs/release.rs b/src/structs/release.rs index 1f8a33b..e065d5a 100644 --- a/src/structs/release.rs +++ b/src/structs/release.rs @@ -1,3 +1,5 @@ +use std::fmt::Display; + use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize, Serialize)] @@ -19,6 +21,31 @@ pub struct Release { author: Author, } +impl Display for Release { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let body = if self.body.len() > 0 { + &self.body + } else { + &String::from("(empty body)") + }; + write!(f, +"Tag: {} +Name: {} + {} +Published: {} (created: {}) +Author: {} ({}) +", + self.tag_name, + self.name, + body, + self.published_at, + self.created_at, + self.author.login, + self.author.email, + ) + } +} + #[derive(Debug, Deserialize, Serialize)] pub struct Author { id: usize,