Merge pull request 'update forgejo-api to 0.6.0' () from api-0.6.0 into main

Reviewed-on: https://codeberg.org/Cyborus/forgejo-cli/pulls/157
This commit is contained in:
Cyborus 2025-02-17 18:19:08 +00:00
commit 4605ea073c
7 changed files with 250 additions and 140 deletions

331
Cargo.lock generated
View file

@ -124,12 +124,6 @@ dependencies = [
"rustc-demangle",
]
[[package]]
name = "base64"
version = "0.21.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
[[package]]
name = "base64"
version = "0.22.1"
@ -589,9 +583,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
[[package]]
name = "forgejo-api"
version = "0.5.0"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4f8d2679a21200688ea04a8c79ecb70b91dcded60c9eded2549d8cee94859484"
checksum = "c00495eb9a5b9f13d25260a848dfd3f86949a2078aaa8120b7f2c31433319910"
dependencies = [
"base64ct",
"bytes",
@ -622,7 +616,7 @@ dependencies = [
"forgejo-api",
"futures",
"git2",
"hyper 1.4.1",
"hyper",
"hyper-util",
"open",
"rand",
@ -777,25 +771,6 @@ dependencies = [
"url",
]
[[package]]
name = "h2"
version = "0.3.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
dependencies = [
"bytes",
"fnv",
"futures-core",
"futures-sink",
"futures-util",
"http 0.2.12",
"indexmap",
"slab",
"tokio",
"tokio-util",
"tracing",
]
[[package]]
name = "h2"
version = "0.4.5"
@ -807,7 +782,7 @@ dependencies = [
"fnv",
"futures-core",
"futures-sink",
"http 1.1.0",
"http",
"indexmap",
"slab",
"tokio",
@ -839,17 +814,6 @@ version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
[[package]]
name = "http"
version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
dependencies = [
"bytes",
"fnv",
"itoa",
]
[[package]]
name = "http"
version = "1.1.0"
@ -861,17 +825,6 @@ dependencies = [
"itoa",
]
[[package]]
name = "http-body"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
dependencies = [
"bytes",
"http 0.2.12",
"pin-project-lite",
]
[[package]]
name = "http-body"
version = "1.0.1"
@ -879,7 +832,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
dependencies = [
"bytes",
"http 1.1.0",
"http",
]
[[package]]
name = "http-body-util"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
dependencies = [
"bytes",
"futures-util",
"http",
"http-body",
"pin-project-lite",
]
[[package]]
@ -894,30 +860,6 @@ version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "hyper"
version = "0.14.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9"
dependencies = [
"bytes",
"futures-channel",
"futures-core",
"futures-util",
"h2 0.3.26",
"http 0.2.12",
"http-body 0.4.6",
"httparse",
"httpdate",
"itoa",
"pin-project-lite",
"socket2",
"tokio",
"tower-service",
"tracing",
"want",
]
[[package]]
name = "hyper"
version = "1.4.1"
@ -927,28 +869,49 @@ dependencies = [
"bytes",
"futures-channel",
"futures-util",
"h2 0.4.5",
"http 1.1.0",
"http-body 1.0.1",
"h2",
"http",
"http-body",
"httparse",
"httpdate",
"itoa",
"pin-project-lite",
"smallvec",
"tokio",
"want",
]
[[package]]
name = "hyper-rustls"
version = "0.27.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2"
dependencies = [
"futures-util",
"http",
"hyper",
"hyper-util",
"rustls",
"rustls-pki-types",
"tokio",
"tokio-rustls",
"tower-service",
]
[[package]]
name = "hyper-tls"
version = "0.5.0"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
dependencies = [
"bytes",
"hyper 0.14.30",
"http-body-util",
"hyper",
"hyper-util",
"native-tls",
"tokio",
"tokio-native-tls",
"tower-service",
]
[[package]]
@ -958,12 +921,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9"
dependencies = [
"bytes",
"futures-channel",
"futures-util",
"http 1.1.0",
"http-body 1.0.1",
"hyper 1.4.1",
"http",
"http-body",
"hyper",
"pin-project-lite",
"socket2",
"tokio",
"tower",
"tower-service",
"tracing",
]
[[package]]
@ -1357,6 +1325,26 @@ version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
[[package]]
name = "pin-project"
version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "pin-project-lite"
version = "0.2.14"
@ -1381,7 +1369,7 @@ version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016"
dependencies = [
"base64 0.22.1",
"base64",
"indexmap",
"quick-xml",
"serde",
@ -1511,20 +1499,23 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
[[package]]
name = "reqwest"
version = "0.11.27"
version = "0.12.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f"
dependencies = [
"base64 0.21.7",
"base64",
"bytes",
"encoding_rs",
"futures-core",
"futures-util",
"h2 0.3.26",
"http 0.2.12",
"http-body 0.4.6",
"hyper 0.14.30",
"h2",
"http",
"http-body",
"http-body-util",
"hyper",
"hyper-rustls",
"hyper-tls",
"hyper-util",
"ipnet",
"js-sys",
"log",
@ -1547,7 +1538,21 @@ dependencies = [
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
"winreg",
"windows-registry",
]
[[package]]
name = "ring"
version = "0.17.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e75ec5e92c4d8aede845126adc388046234541629e76029599ed35a003c7ed24"
dependencies = [
"cc",
"cfg-if",
"getrandom",
"libc",
"untrusted",
"windows-sys 0.52.0",
]
[[package]]
@ -1570,12 +1575,42 @@ dependencies = [
]
[[package]]
name = "rustls-pemfile"
version = "1.0.4"
name = "rustls"
version = "0.23.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395"
dependencies = [
"base64 0.21.7",
"once_cell",
"rustls-pki-types",
"rustls-webpki",
"subtle",
"zeroize",
]
[[package]]
name = "rustls-pemfile"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50"
dependencies = [
"rustls-pki-types",
]
[[package]]
name = "rustls-pki-types"
version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c"
[[package]]
name = "rustls-webpki"
version = "0.102.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9"
dependencies = [
"ring",
"rustls-pki-types",
"untrusted",
]
[[package]]
@ -1788,6 +1823,12 @@ version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "subtle"
version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]]
name = "syn"
version = "2.0.73"
@ -1801,9 +1842,12 @@ dependencies = [
[[package]]
name = "sync_wrapper"
version = "0.1.2"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
dependencies = [
"futures-core",
]
[[package]]
name = "syntect"
@ -1830,20 +1874,20 @@ dependencies = [
[[package]]
name = "system-configuration"
version = "0.5.1"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
dependencies = [
"bitflags 1.3.2",
"bitflags 2.6.0",
"core-foundation",
"system-configuration-sys",
]
[[package]]
name = "system-configuration-sys"
version = "0.5.0"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
dependencies = [
"core-foundation-sys",
"libc",
@ -1989,6 +2033,16 @@ dependencies = [
"tokio",
]
[[package]]
name = "tokio-rustls"
version = "0.26.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37"
dependencies = [
"rustls",
"tokio",
]
[[package]]
name = "tokio-util"
version = "0.7.11"
@ -2002,6 +2056,27 @@ dependencies = [
"tokio",
]
[[package]]
name = "tower"
version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
dependencies = [
"futures-core",
"futures-util",
"pin-project",
"pin-project-lite",
"tokio",
"tower-layer",
"tower-service",
]
[[package]]
name = "tower-layer"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
[[package]]
name = "tower-service"
version = "0.3.2"
@ -2081,6 +2156,12 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e"
[[package]]
name = "untrusted"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
[[package]]
name = "url"
version = "2.5.2"
@ -2252,6 +2333,36 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows-registry"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0"
dependencies = [
"windows-result",
"windows-strings",
"windows-targets 0.52.6",
]
[[package]]
name = "windows-result"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
dependencies = [
"windows-targets 0.52.6",
]
[[package]]
name = "windows-strings"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
dependencies = [
"windows-result",
"windows-targets 0.52.6",
]
[[package]]
name = "windows-sys"
version = "0.48.0"
@ -2400,16 +2511,6 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "winreg"
version = "0.50.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
dependencies = [
"cfg-if",
"windows-sys 0.48.0",
]
[[package]]
name = "xdg"
version = "2.5.2"

View file

@ -27,7 +27,7 @@ comrak = "0.26.0"
crossterm = "0.27.0"
directories = "5.0.1"
eyre = "0.6.12"
forgejo-api = "0.5.0"
forgejo-api = "0.6.0"
futures = "0.3.30"
git2 = "0.19.0"
hyper = "1.4.1"

View file

@ -373,7 +373,7 @@ async fn view_issues(
let labels = labels
.map(|s| s.split(',').map(|s| s.to_string()).collect::<Vec<_>>())
.unwrap_or_default();
let query = forgejo_api::structs::IssueListIssuesQuery {
let mut query = forgejo_api::structs::IssueListIssuesQuery {
q: query_str,
labels: Some(labels.join(",")),
created_by: creator,
@ -387,9 +387,17 @@ async fn view_issues(
page: None,
limit: None,
};
let issues = api
.issue_list_issues(repo.owner(), repo.name(), query)
let mut issues = Vec::new();
for page_idx in 1.. {
query.page = Some(page_idx);
let (headers, page) = api
.issue_list_issues(repo.owner(), repo.name(), query.clone())
.await?;
issues.extend(page);
if !headers.x_has_more.unwrap_or_default() {
break;
}
}
if issues.len() == 1 {
println!("1 issue");
} else {
@ -421,7 +429,7 @@ pub async fn view_comment(repo: &RepoName, api: &Forgejo, id: u64, idx: usize) -
since: None,
before: None,
};
let comments = api
let (_, comments) = api
.issue_get_comments(repo.owner(), repo.name(), id, query)
.await?;
let comment = comments
@ -436,7 +444,7 @@ pub async fn view_comments(repo: &RepoName, api: &Forgejo, id: u64) -> eyre::Res
since: None,
before: None,
};
let comments = api
let (_, comments) = api
.issue_get_comments(repo.owner(), repo.name(), id, query)
.await?;
for comment in comments {
@ -601,7 +609,7 @@ pub async fn edit_comment(
idx: usize,
new_body: Option<String>,
) -> eyre::Result<()> {
let comments = api
let (_, comments) = api
.issue_get_comments(
repo.owner(),
repo.name(),

View file

@ -826,7 +826,7 @@ async fn edit_pr_labels(
limit: Some(u32::MAX),
..Default::default()
};
let mut labels = api
let (_, mut labels) = api
.issue_list_labels(repo.owner(), repo.name(), query)
.await?;
let query = forgejo_api::structs::OrgListLabelsQuery {
@ -836,6 +836,7 @@ async fn edit_pr_labels(
let org_labels = api
.org_list_labels(repo.owner(), query)
.await
.map(|(_, x)| x)
.unwrap_or_default();
labels.extend(org_labels);
@ -1347,7 +1348,7 @@ async fn view_prs(
page: None,
limit: None,
};
let prs = api
let (_, prs) = api
.issue_list_issues(repo.owner(), repo.name(), query)
.await?;
if prs.len() == 1 {
@ -1703,14 +1704,9 @@ async fn find_pr_from_branch(
page: Some(page),
limit: Some(30),
};
let remote_branches = match api
let (headers, remote_branches) = api
.repo_list_branches(repo_owner, repo_name, branch_query)
.await
{
Ok(x) if !x.is_empty() => x,
_ => break,
};
.await?;
let prs = futures::future::try_join_all(
remote_branches
.into_iter()
@ -1722,6 +1718,9 @@ async fn find_pr_from_branch(
return Ok(pr);
}
}
if !headers.x_has_more.unwrap_or_default() {
break;
}
}
Ok(None)
}

View file

@ -326,12 +326,13 @@ async fn list_releases(
draft: bool,
) -> eyre::Result<()> {
let query = forgejo_api::structs::RepoListReleasesQuery {
q: None,
pre_release: Some(prerelease),
draft: Some(draft),
page: None,
limit: None,
};
let releases = api
let (_, releases) = api
.repo_list_releases(repo.owner(), repo.name(), query)
.await?;
for release in releases {
@ -585,12 +586,13 @@ async fn find_release(
name: &str,
) -> eyre::Result<forgejo_api::structs::Release> {
let query = RepoListReleasesQuery {
q: None,
draft: None,
pre_release: None,
page: None,
limit: None,
};
let mut releases = api
let (_, mut releases) = api
.repo_list_releases(repo.owner(), repo.name(), query)
.await?;
let idx = releases

View file

@ -370,7 +370,7 @@ async fn unfollow_user(api: &Forgejo, user: &str) -> eyre::Result<()> {
}
async fn list_following(api: &Forgejo, user: Option<&str>) -> eyre::Result<()> {
let following = match user {
let (_, following) = match user {
Some(user) => {
let query = forgejo_api::structs::UserListFollowingQuery {
limit: Some(u32::MAX),
@ -412,7 +412,7 @@ async fn list_following(api: &Forgejo, user: Option<&str>) -> eyre::Result<()> {
}
async fn list_followers(api: &Forgejo, user: Option<&str>) -> eyre::Result<()> {
let followers = match user {
let (_, followers) = match user {
Some(user) => {
let query = forgejo_api::structs::UserListFollowersQuery {
limit: Some(u32::MAX),
@ -481,7 +481,7 @@ async fn list_repos(
starred: bool,
sort: Option<RepoSortOrder>,
) -> eyre::Result<()> {
let mut repos = if starred {
let (_, mut repos) = if starred {
match user {
Some(user) => {
let query = forgejo_api::structs::UserListStarredQuery {
@ -561,7 +561,7 @@ async fn list_repos(
}
async fn list_orgs(api: &Forgejo, user: Option<&str>) -> eyre::Result<()> {
let mut orgs = match user {
let (_, mut orgs) = match user {
Some(user) => {
let query = forgejo_api::structs::OrgListUserOrgsQuery {
limit: Some(u32::MAX),
@ -620,7 +620,7 @@ async fn list_activity(api: &Forgejo, user: Option<&str>) -> eyre::Result<()> {
only_performed_by: Some(true),
..Default::default()
};
let feed = api.user_list_activity_feeds(&user, query).await?;
let (_, feed) = api.user_list_activity_feeds(&user, query).await?;
let SpecialRender {
bold,

View file

@ -77,7 +77,7 @@ async fn wiki_contents(repo: &RepoName, api: &Forgejo) -> eyre::Result<()> {
page: None,
limit: None,
};
let pages = api
let (_, pages) = api
.repo_get_wiki_pages(repo.owner(), repo.name(), query)
.await?;
for page in pages {