summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-04-22 08:09:21 +0300
committerLars Wirzenius <liw@liw.fi>2021-04-22 08:39:16 +0300
commit3f68ce4a8e9b295a4b9fc288174f166e229da8b0 (patch)
treea4a235e498c98fd02ab5b84f66e577e2a14410c3
parent36db48686de4baf1b122f8b78d96432b398be595 (diff)
downloadbumper-rs-3f68ce4a8e9b295a4b9fc288174f166e229da8b0.tar.gz
feat: allow setting git tag name template
-rw-r--r--bumper.md4
-rw-r--r--src/bin/bumper.rs12
-rw-r--r--src/git.rs4
3 files changed, 13 insertions, 7 deletions
diff --git a/bumper.md b/bumper.md
index 1fc4336..9472b73 100644
--- a/bumper.md
+++ b/bumper.md
@@ -149,9 +149,9 @@ given an installed Bumper
given file foo/setup.py from empty
given file foo/lib/version.py from empty
given all files in foo are committed to git
-when I run, in foo, bumper 105.12765.42
+when I run, in foo, bumper --tag=foo-%v 105.12765.42
then all changes in foo are committed
-then in foo, git tag v105.12765.42 is a signed tag
+then in foo, git tag foo-105.12765.42 is a signed tag
then file foo/lib/version.py matches regex /__version__\s*=\s*"105\.12765\.42"/
~~~
diff --git a/src/bin/bumper.rs b/src/bin/bumper.rs
index 59443e5..fb5194a 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;
@@ -25,9 +26,13 @@ fn bumper() -> Result<(), BumperError> {
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("", &opt.version);
+ println!("release tag: {}", tag);
+ git::tag(".", &tag, &msg)?;
debug!("Bumper ends OK");
Ok(())
}
@@ -41,6 +46,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,
}
diff --git a/src/git.rs b/src/git.rs
index ea640d6..061ed61 100644
--- a/src/git.rs
+++ b/src/git.rs
@@ -3,9 +3,7 @@ use log::debug;
use std::path::Path;
use std::process::Command;
-pub fn tag<P: AsRef<Path>>(dirname: P, version: &str) -> Result<(), BumperError> {
- let msg = format!("release version {}", version);
- let tag_name = format!("v{}", version);
+pub fn tag<P: AsRef<Path>>(dirname: P, tag_name: &str, msg: &str) -> Result<(), BumperError> {
git(dirname.as_ref(), &["tag", "-am", &msg, &tag_name])?;
Ok(())
}