use crate::{gitea::*, *}; use anyhow::Result; use reqwest::multipart; use std::fs::File; use std::io::Read; pub(crate) async fn run(common: Common, fname: PathBuf, tag: String) -> Result<()> { let cli = client(&common)?; let bytes = { let mut fin = File::open(&fname)?; let mut buffer = Vec::new(); fin.read_to_end(&mut buffer)?; buffer }; let form = multipart::Form::new().part("attachment", multipart::Part::bytes(bytes)); let release = get_release_by_tag(&cli, &common.server, &common.owner, &common.repo, &tag).await?; cli.post( format!( "{}/api/v1/repos/{}/{}/releases/{}", &common.server, &common.owner, &common.repo, release.id, ) .as_str(), ) .query(&[("name", fname)]) .multipart(form) .send() .await?; Ok(()) }