Move the Release info structs to new tree

This commit is contained in:
2025-05-27 20:42:05 -05:00
parent 351c4902ae
commit 5f666a8179
3 changed files with 33 additions and 35 deletions

View File

@@ -4,36 +4,6 @@ pub mod cli;
pub mod api;
pub mod structs;
/// A struct matching a Gitea "Release" entry
#[derive(Debug, Deserialize, Serialize)]
pub struct ReleaseInfo {
id: usize,
tag_name: String,
target_commitish: String,
name: String,
body: String,
url: String,
html_url: String,
tarball_url: String,
zipball_url: String,
upload_url: String,
draft: bool,
prerelease: bool,
created_at: String,
published_at: String,
author: Author,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Author {
id: usize,
login: String,
login_name: String,
source_id: usize,
full_name: String,
email: String,
}
#[derive(Debug, Serialize)]
pub struct CreateReleaseOption {
pub body: String,
@@ -53,7 +23,7 @@ pub struct ApiError {
#[derive(Debug, Deserialize, Serialize)]
#[serde(untagged)]
pub enum CreateResult {
Success(ReleaseInfo),
Success(structs::release::Release),
ErrWithMessage(ApiError),
Empty,
}

View File

@@ -1,5 +1,5 @@
use gt_tools::CreateReleaseOption;
use gt_tools::{ReleaseInfo, cli::Args};
use gt_tools::{structs::release::Release, cli::Args};
use reqwest::multipart::Part;
use std::collections::HashMap;
@@ -76,7 +76,7 @@ async fn do_list_releases(
client: &reqwest::Client,
gitea_url: &str,
repo: &str,
) -> Result<Vec<ReleaseInfo>, Error> {
) -> Result<Vec<Release>, Error> {
let request_url = format!(
"{gitea_url}{front}{repo}{back}",
front = API_RELEASE_FRONT,
@@ -91,7 +91,7 @@ async fn do_list_releases(
// TODO: Handle case with no releases.
// afaict: Serde tries to unpack an empty list, can't decide what struct it's unpacking,
// and emits an error. Desired behavior: empty Vec.
let body_text: Vec<ReleaseInfo> = response.json().await?;
let body_text: Vec<Release> = response.json().await?;
return Ok(body_text);
}

View File

@@ -1,5 +1,33 @@
use serde::{Deserialize, Serialize};
pub struct Release;
#[derive(Debug, Deserialize, Serialize)]
pub struct Release {
id: usize,
tag_name: String,
target_commitish: String,
name: String,
body: String,
url: String,
html_url: String,
tarball_url: String,
zipball_url: String,
upload_url: String,
draft: bool,
prerelease: bool,
created_at: String,
published_at: String,
author: Author,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Author {
id: usize,
login: String,
login_name: String,
source_id: usize,
full_name: String,
email: String,
}
pub struct CreateReleaseOption;