2 Commits

Author SHA1 Message Date
3e557665c9 Debian 12-compatible minimum openssl crates
Crate `openssl-sys = 0.9.55` seems to look for OpenSSL v1.x, which is
not available to Debian 12. Pinning it up to 0.9.64 makes it match with
OpenSSL 3.x which *is* available.

HOWEVER! Building the crate on Debian 11 works just fine. Pinning the
dependencies this way is an error as I neither use them directly, nor
have any reason to depend on this specific version.

Cargo can't know about the distro version. Maybe I can use crate
features to select different openssl-sys crates? Further work required.
2025-07-02 14:52:38 -05:00
faa5ce8549 Pin crate log to 0.4.6
The `reqwest` crate says it can accept `log` version 0.4.5, but it uses
an item (a fn, probably) that doesn't exist until 0.4.6.
2025-07-02 14:32:50 -05:00
3 changed files with 18 additions and 47 deletions

View File

@@ -5,12 +5,25 @@ edition = "2024"
[dependencies] [dependencies]
clap = { version = "4.0.7", features = ["derive", "env"] } clap = { version = "4.0.7", features = ["derive", "env"] }
colored = "2.0.0"
itertools = "0.10.0"
reqwest = { version = "0.11.13", features = ["json", "stream", "multipart"] } reqwest = { version = "0.11.13", features = ["json", "stream", "multipart"] }
serde = { version = "1.0.152", features = ["derive"] } serde = { version = "1.0.152", features = ["derive"] }
tokio = { version = "1.24.2", features = ["macros", "rt-multi-thread"] } tokio = { version = "1.24.2", features = ["macros", "rt-multi-thread"] }
# Grand-dependency Pins ----
# Fixes: Reqwest uses too-old version of crate `log`
log = "0.4.6"
# Debian 12 uses OpenSSL 3.x and older libssl-sys crates are angry about that
# Fixes: native lib lookup.
# Causes: missing item in crate `ffi`
openssl-sys = "0.9.64"
# Fixes: missing item in crate `ffi` (from openssl-sys)
openssl = "0.10.35"
# End Grand-dependency Pins ----
# Packages available in Debian (Sid) # Packages available in Debian (Sid)
# clap = "4.5.23" # clap = "4.5.23"
# reqwest = "0.12.15" # reqwest = "0.12.15"

View File

@@ -33,18 +33,9 @@ async fn main() -> Result<(), gt_tool::Error> {
gt_tool::cli::Commands::ListReleases => { gt_tool::cli::Commands::ListReleases => {
let releases = let releases =
gt_tool::api::release::list_releases(&client, &args.gitea_url, &args.repo).await?; gt_tool::api::release::list_releases(&client, &args.gitea_url, &args.repo).await?;
// Print in reverse order so the newest items are closest to the for release in releases {
// user's command prompt. Otherwise the newest item scrolls off the println!("{:?}", release);
// screen and can't be seen. }
let _ = itertools::Itertools::intersperse(
releases
.iter()
.rev()
.map(|release| release.to_string()),
String::from("")
)
.map(|release| println!("{}", release))
.fold((), |_, _| () );
} }
gt_tool::cli::Commands::CreateRelease { gt_tool::cli::Commands::CreateRelease {
name, name,

View File

@@ -1,6 +1,3 @@
use std::fmt::Display;
use colored::Colorize;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize)] #[derive(Debug, Deserialize, Serialize)]
@@ -22,36 +19,6 @@ pub struct Release {
author: Author, author: Author,
} }
impl Display for Release {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let tag = "Tag:".green().bold();
let name = "Name:".green();
let published = "Published:".bright_green();
let created = "Created:".green().dimmed();
let author = "Author:".blue();
let body = if self.body.len() > 0 {
&self.body.white()
} else {
&String::from("(empty body)").dimmed()
};
write!(f,
"{tag} {}
{name} {}
{}
{published} {} ({created} {})
{author} {} ({})",
self.tag_name.bold(),
self.name,
body,
self.published_at,
self.created_at.dimmed(),
self.author.login,
self.author.email,
)
}
}
#[derive(Debug, Deserialize, Serialize)] #[derive(Debug, Deserialize, Serialize)]
pub struct Author { pub struct Author {
id: usize, id: usize,