gitea-release/src/cmd/cut.rs

43 lines
1.2 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(crate) async fn run(
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())?);
let desc = changelog::read(fname.clone(), tag.clone())?;
if !git::has_tag(&repo, tag.clone())? {
git::tag_version(&repo, tag.clone(), desc.clone())?;
let _ = git::push_tags(&repo);
} else
/* The tag already exists */
{
return Ok(());
}
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);
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-05-31 18:19:22 +00:00
target_commitish: "HEAD".into(),
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(())
}