summaryrefslogtreecommitdiff
path: root/src/bin/bumper.rs
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-04-22 05:43:18 +0000
committerLars Wirzenius <liw@liw.fi>2021-04-22 05:43:18 +0000
commit4427fe12410f911a9c8f18ea7b3c9643c88f6d5f (patch)
treee05affad9e645047bddee6a93ca69e11445f50fa /src/bin/bumper.rs
parent1600a727446867029451df6f8a181b5a07709efb (diff)
parent24574aef2299925c10eeb9d20a942f36d1d806d4 (diff)
downloadbumper-rs-4427fe12410f911a9c8f18ea7b3c9643c88f6d5f.tar.gz
Merge branch 'tagname-take2' into 'main'
make git tag name be configurable via a template Closes #1 See merge request larswirzenius/bumper!19
Diffstat (limited to 'src/bin/bumper.rs')
-rw-r--r--src/bin/bumper.rs21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/bin/bumper.rs b/src/bin/bumper.rs
index 59443e5..9fbf898 100644
--- a/src/bin/bumper.rs
+++ b/src/bin/bumper.rs
@@ -1,6 +1,7 @@
use bumper::errors::BumperError;
use bumper::git;
use bumper::project::ProjectKind;
+use bumper::tag::Tag;
use log::{debug, error};
use std::path::{Path, PathBuf};
use std::process::exit;
@@ -20,14 +21,25 @@ fn bumper() -> Result<(), BumperError> {
let cwd = abspath(".")?;
println!("Setting version for project in {}", cwd.display());
- for mut kind in ProjectKind::detect(&cwd)? {
+
+ let mut kinds = ProjectKind::detect(&cwd)?;
+ if kinds.is_empty() {
+ return Err(BumperError::UnknownProjectKind(cwd));
+ }
+ let name = kinds[0].name()?;
+
+ for kind in kinds.iter_mut() {
let version = kind.set_version(&opt.version)?;
println!("{} project set to {}", kind.desc(), version);
}
- let msg = format!("Set version to {}", opt.version);
+ let msg = format!("Release version {}", opt.version);
git::commit(".", &msg)?;
- git::tag(".", &opt.version)?;
+
+ let tag = Tag::new(&opt.tag)?;
+ let tag = tag.apply(&name, &opt.version);
+ println!("release tag: {}", tag);
+ git::tag(".", &tag, &msg)?;
debug!("Bumper ends OK");
Ok(())
}
@@ -41,6 +53,9 @@ fn abspath<P: AsRef<Path>>(path: P) -> Result<PathBuf, BumperError> {
#[derive(Debug, StructOpt)]
struct Opt {
+ #[structopt(long, default_value = "v%v")]
+ tag: String,
+
#[structopt(help = "version number of new release")]
version: String,
}