aboutsummaryrefslogtreecommitdiffstats
path: root/xtask/src/release.rs
diff options
context:
space:
mode:
Diffstat (limited to 'xtask/src/release.rs')
-rw-r--r--xtask/src/release.rs51
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)
}