gitea-release/src/cmd/cut.rs

38 lines
1.0 KiB
Rust
Raw Normal View History

use crate::{changelog, cmd::*, git, version};
2020-05-31 16:53:34 +00:00
use anyhow::Result;
use std::path::PathBuf;
pub async fn run(
2020-05-31 16:53:34 +00:00
common: Common,
fname: PathBuf,
tag: Option<String>,
2020-05-31 16:53:34 +00:00
rm: ReleaseMeta,
) -> Result<()> {
let repo = git2::Repository::open(".")?;
let tag = tag.unwrap_or(version::read_version("VERSION".into())?);
2020-07-09 17:06:07 +00:00
if git::has_tag(&repo, tag.clone())? {
return Err(anyhow::anyhow!("what"));
}
2020-05-31 16:53:34 +00:00
let desc = changelog::read(fname, tag.clone())?;
2020-07-08 22:32:59 +00:00
let cli = gitea::Client::new(common.server, common.token, crate::APP_USER_AGENT)?;
2020-07-08 22:54:43 +00:00
let vtag = format!("v{}", tag);
2020-07-09 17:06:07 +00:00
let repo = cli.get_repo(common.owner.clone(), common.repo.clone()).await?;
let cr = gitea::CreateRelease {
2020-05-31 16:53:34 +00:00
body: desc,
draft: rm.draft,
name: rm.name.or(Some(format!("Version {}", tag))).unwrap(),
prerelease: rm.pre_release,
2020-07-08 22:54:43 +00:00
tag_name: vtag,
2020-07-09 17:06:07 +00:00
target_commitish: repo.default_branch,
2020-05-31 16:53:34 +00:00
};
let _ = cli.create_release(common.owner, common.repo, cr).await?;
2020-05-31 16:53:34 +00:00
2020-05-31 20:34:05 +00:00
println!("Created release {}", tag);
2020-05-31 16:53:34 +00:00
Ok(())
}