diff options
Diffstat (limited to 'xtask/src/release.rs')
-rw-r--r-- | xtask/src/release.rs | 51 |
1 files changed, 9 insertions, 42 deletions
diff --git a/xtask/src/release.rs b/xtask/src/release.rs index b53c838..06f6e1e 100644 --- a/xtask/src/release.rs +++ b/xtask/src/release.rs @@ -4,6 +4,8 @@ use anyhow::Result; use clap::{Args, Subcommand}; use semver::Version; +use crate::PKG_VER; + use self::bump::{Bump, Level}; mod bump; @@ -83,52 +85,17 @@ impl Step { } pub fn bump(level: Level) -> Result<Bump> { - let mut bump = Bump::from(level); + let version = PKG_VER.parse().unwrap_or_else(|_| Version::new(0, 1, 0)); + let next = level.bump(&version); + + let mut bump = Bump { next, version }; - bump.bump_file("./Cargo.toml", bump::replace_cargo)?; + bump.bump_file("./Cargo.toml", bump::cargo)?; bump.bump_file("./README.md", bump::replace)?; + bump.bump_file("./CHANGELOG.md", bump::changelog)?; bump.bump_file("./pkg/archlinux/projectr/PKGBUILD", bump::replace)?; bump.bump_file("./pkg/archlinux/projectr-bin/PKGBUILD", bump::replace)?; - bump.bump_file("./pkg/archlinux/projectr-git/PKGBUILD", |buf, _| { - let stdout = std::process::Command::new("git") - .arg("describe") - .arg("--long") - .arg("--abbrev=7") - .output()? - .stdout; - - let pkgver = std::str::from_utf8(&stdout)? - .trim() - .trim_start_matches('v') - .replacen("-g", ".g", 1) - .replacen('-', "-r", 1) - .replace('-', "."); - - if let Some(from) = buf.lines().find(|l| l.starts_with("pkgver=")) { - Ok(buf.replace(from, &format!("pkgver={pkgver}"))) - } else { - Ok(buf) - } - })?; - - bump.bump_file("./CHANGELOG.md", |buf, Bump { version: _, next }| { - let date = chrono::Utc::now().format("%Y-%m-%d"); - Ok(buf - .replace( - "## [Unreleased]", - &format!( - "## [Unreleased]\n\n\ - ## [{next}] - {date}" - ), - ) - .replace( - "[Unreleased]: https://git.sr.ht/~tobyvin/projectr/log/HEAD", - &format!( - "[Unreleased]: https://git.sr.ht/~tobyvin/projectr/log/HEAD\n\ - [{next}]: https://git.sr.ht/~tobyvin/projectr/log/v{next}" - ), - )) - })?; + bump.bump_file("./pkg/archlinux/projectr-git/PKGBUILD", bump::vsc_pkgbuild)?; Ok(bump) } |