From 24574aef2299925c10eeb9d20a942f36d1d806d4 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Thu, 22 Apr 2021 08:27:04 +0300 Subject: feat: use project's name in git tag template --- src/python.rs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'src/python.rs') diff --git a/src/python.rs b/src/python.rs index 4cc043e..28c0aec 100644 --- a/src/python.rs +++ b/src/python.rs @@ -2,8 +2,10 @@ use crate::errors::BumperError; use glob::glob; use log::{debug, info}; use std::path::{Path, PathBuf}; +use std::process::Command; pub struct Python { + dirname: PathBuf, version_pys: Vec, } @@ -17,13 +19,31 @@ impl Python { debug!("no version.py files in {}", dirname.display()); Err(BumperError::NoVersionPy(dirname.to_path_buf())) } else { - Ok(Self { version_pys: files }) + Ok(Self { + dirname: dirname.to_path_buf(), + version_pys: files, + }) } } else { Err(BumperError::UnknownProjectKind(dirname.to_path_buf())) } } + pub fn name(&mut self) -> Result { + let output = Command::new("./setup.py") + .arg("--name") + .current_dir(&self.dirname) + .output() + .map_err(|err| BumperError::Setupnvoke(self.dirname.to_path_buf(), err))?; + if output.status.success() { + let name = String::from_utf8_lossy(&output.stdout).into_owned(); + Ok(name.trim_end().to_string()) + } else { + let stderr = String::from_utf8_lossy(&output.stderr).into_owned(); + Err(BumperError::Setup(self.dirname.to_path_buf(), stderr)) + } + } + pub fn set_version(&mut self, version: &str) -> Result { for filename in self.version_pys.iter() { info!("writing Python version to {}", filename.display()); -- cgit v1.2.1