33 lines
860 B
Rust
33 lines
860 B
Rust
|
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(())
|
||
|
}
|