summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-04-21 08:20:43 +0300
committerLars Wirzenius <liw@liw.fi>2021-04-21 09:24:01 +0300
commitafc842c9025e33f2e25716d80ecac07117766457 (patch)
treec0c563d80cb5d190e5afbd09704055db7ad4a1c1
parent50258196ee8832ca8d9f02e73babb431248ed025 (diff)
downloadbumper-rs-afc842c9025e33f2e25716d80ecac07117766457.tar.gz
refactor: make logging and messages more consistent
Also, report the Debian package version correctly, not just the upstream part.
-rw-r--r--bumper.md6
-rw-r--r--src/bin/bumper.rs21
-rw-r--r--src/debian.rs12
-rw-r--r--src/git.rs4
-rw-r--r--src/project.rs19
-rw-r--r--src/python.rs8
-rw-r--r--src/rust.rs9
7 files changed, 53 insertions, 26 deletions
diff --git a/bumper.md b/bumper.md
index 1082997..1fc4336 100644
--- a/bumper.md
+++ b/bumper.md
@@ -9,7 +9,11 @@ The tool is used like this:
~~~{.numberLines}
$ cd ~/my-project
-$ bumper 1.2.0
+$ bumper 1.2.3
+Setting version for project in /home/liw/tmp/toy
+Rust project set to 1.2.3
+Debian package project set to 1.2.3-1
+Python project set to 1.2.3
$ git push --tags
...
$
diff --git a/src/bin/bumper.rs b/src/bin/bumper.rs
index b2e9f68..59443e5 100644
--- a/src/bin/bumper.rs
+++ b/src/bin/bumper.rs
@@ -1,7 +1,8 @@
use bumper::errors::BumperError;
use bumper::git;
use bumper::project::ProjectKind;
-use log::{error, info};
+use log::{debug, error};
+use std::path::{Path, PathBuf};
use std::process::exit;
use structopt::StructOpt;
@@ -14,20 +15,30 @@ fn main() {
fn bumper() -> Result<(), BumperError> {
pretty_env_logger::init_custom_env("BUMPER_LOG");
- info!("Bumper starts");
+ debug!("Bumper starts");
let opt = Opt::from_args();
- for mut kind in ProjectKind::detect(".")? {
- kind.set_version(&opt.version)?;
+ let cwd = abspath(".")?;
+ println!("Setting version for project in {}", cwd.display());
+ for mut kind in ProjectKind::detect(&cwd)? {
+ let version = kind.set_version(&opt.version)?;
+ println!("{} project set to {}", kind.desc(), version);
}
let msg = format!("Set version to {}", opt.version);
git::commit(".", &msg)?;
git::tag(".", &opt.version)?;
- info!("Bumper ends OK");
+ debug!("Bumper ends OK");
Ok(())
}
+fn abspath<P: AsRef<Path>>(path: P) -> Result<PathBuf, BumperError> {
+ let path = path.as_ref();
+ path.to_path_buf()
+ .canonicalize()
+ .map_err(|err| BumperError::AbsPath(path.to_path_buf(), err))
+}
+
#[derive(Debug, StructOpt)]
struct Opt {
#[structopt(help = "version number of new release")]
diff --git a/src/debian.rs b/src/debian.rs
index d82a14a..3f9e01b 100644
--- a/src/debian.rs
+++ b/src/debian.rs
@@ -1,5 +1,5 @@
use crate::errors::BumperError;
-use log::{debug, info};
+use log::debug;
use std::path::{Path, PathBuf};
use std::process::Command;
@@ -10,24 +10,20 @@ pub struct Debian {
impl Debian {
pub fn new(dirname: &Path) -> Result<Self, BumperError> {
let changelog = dirname.join("debian/changelog");
+ debug!("does {} exist? {}", changelog.display(), changelog.exists());
if changelog.exists() {
- info!("directory {} contains Debian packaging", dirname.display());
return Ok(Self {
dirname: dirname.to_path_buf(),
});
}
- debug!(
- "directory {} doesn't contains Debian packaging",
- dirname.display()
- );
Err(BumperError::UnknownProjectKind(dirname.to_path_buf()))
}
- pub fn set_version(&mut self, version: &str) -> Result<(), BumperError> {
+ pub fn set_version(&mut self, version: &str) -> Result<String, BumperError> {
let version = format!("{}-1", version);
self.dch(&["-v", &version, ""])?;
self.dch(&["-r", ""])?;
- Ok(())
+ Ok(version)
}
fn dch(&self, args: &[&str]) -> Result<(), BumperError> {
diff --git a/src/git.rs b/src/git.rs
index 563afa1..ea640d6 100644
--- a/src/git.rs
+++ b/src/git.rs
@@ -1,5 +1,5 @@
use crate::errors::BumperError;
-use log::{debug, info};
+use log::debug;
use std::path::Path;
use std::process::Command;
@@ -16,7 +16,7 @@ pub fn commit<P: AsRef<Path>>(dirname: P, msg: &str) -> Result<(), BumperError>
}
fn git(dirname: &Path, args: &[&str]) -> Result<(), BumperError> {
- info!("git {:?} in {}", args, dirname.display());
+ debug!("git {:?} in {}", args, dirname.display());
let output = Command::new("git")
.args(args)
.current_dir(dirname)
diff --git a/src/project.rs b/src/project.rs
index e67fefc..655fb23 100644
--- a/src/project.rs
+++ b/src/project.rs
@@ -2,6 +2,7 @@ use crate::debian::Debian;
use crate::errors::BumperError;
use crate::python::Python;
use crate::rust::Rust;
+use log::{debug, info};
use std::path::Path;
pub enum ProjectKind {
@@ -15,6 +16,8 @@ impl ProjectKind {
let dirname = dirname.as_ref();
let mut kinds = vec![];
+ debug!("detecting kinds of project in {}", dirname.display());
+
if let Ok(p) = Rust::new(dirname) {
kinds.push(ProjectKind::Rust(p));
}
@@ -30,16 +33,26 @@ impl ProjectKind {
if kinds.is_empty() {
Err(BumperError::UnknownProjectKind(dirname.to_path_buf()))
} else {
+ for kind in kinds.iter() {
+ info!("{} project in {}", kind.desc(), dirname.display());
+ }
Ok(kinds)
}
}
- pub fn set_version(&mut self, version: &str) -> Result<(), BumperError> {
+ pub fn desc(&self) -> &'static str {
match self {
+ Self::Debian(_) => "Debian package",
+ Self::Python(_) => "Python",
+ Self::Rust(_) => "Rust",
+ }
+ }
+
+ pub fn set_version(&mut self, version: &str) -> Result<String, BumperError> {
+ Ok(match self {
Self::Rust(ref mut rust) => rust.set_version(version)?,
Self::Debian(ref mut debian) => debian.set_version(version)?,
Self::Python(ref mut python) => python.set_version(version)?,
- }
- Ok(())
+ })
}
}
diff --git a/src/python.rs b/src/python.rs
index 2b851f8..4cc043e 100644
--- a/src/python.rs
+++ b/src/python.rs
@@ -9,30 +9,28 @@ pub struct Python {
impl Python {
pub fn new(dirname: &Path) -> Result<Self, BumperError> {
- debug!("considering {} as a Python project", dirname.display());
let setup_py = dirname.join("setup.py");
+ debug!("does {} exist? {}", setup_py.display(), setup_py.exists());
if setup_py.exists() {
let files = find_version_py_files(dirname);
if files.is_empty() {
debug!("no version.py files in {}", dirname.display());
Err(BumperError::NoVersionPy(dirname.to_path_buf()))
} else {
- info!("Looks like a Python project: {}", dirname.display());
Ok(Self { version_pys: files })
}
} else {
- debug!("{} does not exist", setup_py.display());
Err(BumperError::UnknownProjectKind(dirname.to_path_buf()))
}
}
- pub fn set_version(&mut self, version: &str) -> Result<(), BumperError> {
+ pub fn set_version(&mut self, version: &str) -> Result<String, BumperError> {
for filename in self.version_pys.iter() {
info!("writing Python version to {}", filename.display());
std::fs::write(filename, format!("__version__ = \"{}\"\n", version))
.map_err(|err| BumperError::PythonWrite(filename.to_path_buf(), err))?;
}
- Ok(())
+ Ok(version.to_string())
}
}
diff --git a/src/rust.rs b/src/rust.rs
index 10dc1a1..0ffe8c0 100644
--- a/src/rust.rs
+++ b/src/rust.rs
@@ -13,6 +13,11 @@ pub struct Rust {
impl Rust {
pub fn new(dirname: &Path) -> Result<Self, BumperError> {
let cargo_toml = dirname.join("Cargo.toml");
+ debug!(
+ "does {} exist? {}",
+ cargo_toml.display(),
+ cargo_toml.exists()
+ );
if cargo_toml.exists() {
return Ok(Self {
dirname: dirname.to_path_buf(),
@@ -22,7 +27,7 @@ impl Rust {
Err(BumperError::UnknownProjectKind(dirname.to_path_buf()))
}
- pub fn set_version(&mut self, version: &str) -> Result<(), BumperError> {
+ pub fn set_version(&mut self, version: &str) -> Result<String, BumperError> {
debug!("parsing Cargo.toml from {}", self.dirname.display());
// debug!("Cargo.toml:\n{:#?}", self.cargo_toml);
self.cargo_toml.set_version(version)?;
@@ -40,7 +45,7 @@ impl Rust {
dirname.display(),
version
);
- Ok(())
+ Ok(version.to_string())
}
fn update_cargo_lock(&self) -> Result<(), BumperError> {