Merge pull request 'add more success messages' (#78) from success-msg into main

Reviewed-on: https://codeberg.org/Cyborus/forgejo-cli/pulls/78
This commit is contained in:
Cyborus 2024-06-10 17:30:52 +00:00
commit 7a2d622152
3 changed files with 38 additions and 8 deletions

View file

@ -574,8 +574,16 @@ pub async fn close_issue(
unset_due_date: None, unset_due_date: None,
updated_at: None, updated_at: None,
}; };
api.issue_edit_issue(repo.owner(), repo.name(), issue, edit) let issue_data = api
.issue_edit_issue(repo.owner(), repo.name(), issue, edit)
.await?; .await?;
let issue_title = issue_data
.title
.as_deref()
.ok_or_eyre("issue does not have title")?;
println!("Closed issue {issue}: \"{issue_title}\"");
Ok(()) Ok(())
} }

View file

@ -780,6 +780,17 @@ async fn merge_pr(
let pr_number = pr_info.number.ok_or_eyre("pr does not have number")?; let pr_number = pr_info.number.ok_or_eyre("pr does not have number")?;
api.repo_merge_pull_request(repo.owner(), repo.name(), pr_number, request) api.repo_merge_pull_request(repo.owner(), repo.name(), pr_number, request)
.await?; .await?;
let pr_title = pr_info
.title
.as_deref()
.ok_or_eyre("pr does not have title")?;
let pr_base = pr_info.base.as_ref().ok_or_eyre("pr does not have base")?;
let base_label = pr_base
.label
.as_ref()
.ok_or_eyre("base does not have label")?;
println!("Merged PR #{pr_number} \"{pr_title}\" into `{base_label}`");
Ok(()) Ok(())
} }

View file

@ -221,7 +221,7 @@ async fn create_release(
let release_opt = forgejo_api::structs::CreateReleaseOption { let release_opt = forgejo_api::structs::CreateReleaseOption {
body, body,
draft: Some(draft), draft: Some(draft),
name: Some(name), name: Some(name.clone()),
prerelease: Some(prerelease), prerelease: Some(prerelease),
tag_name, tag_name,
target_commitish: None, target_commitish: None,
@ -259,6 +259,8 @@ async fn create_release(
.await?; .await?;
} }
println!("Created release {name}");
Ok(()) Ok(())
} }
@ -461,23 +463,25 @@ async fn create_asset(
) )
.await?; .await?;
println!("Added attachment `{}` to {}", asset, release);
Ok(()) Ok(())
} }
async fn delete_asset( async fn delete_asset(
repo: &RepoName, repo: &RepoName,
api: &Forgejo, api: &Forgejo,
release: String, release_name: String,
asset: String, asset_name: String,
) -> eyre::Result<()> { ) -> eyre::Result<()> {
let release = find_release(repo, api, &release).await?; let release = find_release(repo, api, &release_name).await?;
let assets = release let assets = release
.assets .assets
.as_ref() .as_ref()
.ok_or_else(|| eyre::eyre!("release does not have assets"))?; .ok_or_else(|| eyre::eyre!("release does not have assets"))?;
let asset = assets let asset = assets
.iter() .iter()
.find(|a| a.name.as_ref() == Some(&asset)) .find(|a| a.name.as_ref() == Some(&asset_name))
.ok_or_else(|| eyre!("asset not found"))?; .ok_or_else(|| eyre!("asset not found"))?;
let release_id = release let release_id = release
.id .id
@ -487,6 +491,7 @@ async fn delete_asset(
.ok_or_else(|| eyre::eyre!("asset does not have id"))?; .ok_or_else(|| eyre::eyre!("asset does not have id"))?;
api.repo_delete_release_attachment(repo.owner(), repo.name(), release_id, asset_id) api.repo_delete_release_attachment(repo.owner(), repo.name(), release_id, asset_id)
.await?; .await?;
println!("Removed attachment `{}` from {}", asset_name, release_name);
Ok(()) Ok(())
} }
@ -535,17 +540,23 @@ async fn download_asset(
.to_vec() .to_vec()
} }
}; };
let output = output let real_output = output
.as_deref() .as_deref()
.unwrap_or_else(|| std::path::Path::new(&asset)); .unwrap_or_else(|| std::path::Path::new(&asset));
tokio::fs::OpenOptions::new() tokio::fs::OpenOptions::new()
.create_new(true) .create_new(true)
.write(true) .write(true)
.open(output) .open(real_output)
.await? .await?
.write_all(file.as_ref()) .write_all(file.as_ref())
.await?; .await?;
if output.is_some() {
println!("Downloaded {asset} into {}", real_output.display());
} else {
println!("Downloaded {asset}");
}
Ok(()) Ok(())
} }