aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorToby Vincent <tobyv13@gmail.com>2023-06-22 22:14:08 -0500
committerToby Vincent <tobyv13@gmail.com>2023-07-08 11:46:16 -0500
commita577ae082d57297877d369427e8cec7adb07b419 (patch)
treeb9f80b605b58a133e1904e934e5e94ddf2aa12e9
parent2e4fa58f7df52e6d6c67f476bd51b99bce8056cf (diff)
build: reorganize xtask crate
-rw-r--r--xtask/src/dist.rs90
-rw-r--r--xtask/src/lib.rs30
-rw-r--r--xtask/src/main.rs3
-rw-r--r--xtask/src/release/bump.rs8
4 files changed, 3 insertions, 128 deletions
diff --git a/xtask/src/dist.rs b/xtask/src/dist.rs
deleted file mode 100644
index 119eece..0000000
--- a/xtask/src/dist.rs
+++ /dev/null
@@ -1,90 +0,0 @@
-use std::{
- env::consts::ARCH,
- fs::File,
- path::{Path, PathBuf},
-};
-
-use anyhow::{ensure, Result};
-use flate2::{write::GzEncoder, Compression};
-use tar::Builder;
-
-use crate::{BIN_NAME, PKG_INCLUDE, PKG_VER};
-
-pub fn generate_tar_gz(profile: &str, tag: Option<&str>) -> Result<PathBuf> {
- let pkg_name = format!("{BIN_NAME}-{PKG_VER}-{ARCH}.tar.gz");
-
- let target_dir = PathBuf::from("target").canonicalize()?;
- let profile_dir = target_dir.join(profile);
- let dist_dir = target_dir.join("dist");
- let out_dir = find_out_dir(&profile_dir)?;
-
- let bin_path = profile_dir.join(BIN_NAME);
- let pkg_path = dist_dir.join(pkg_name);
-
- ensure!(
- !tag.is_some_and(|t| t.trim_start_matches('v') != PKG_VER),
- "Package version does not match provided tag: {PKG_VER} != {}",
- tag.unwrap().trim_start_matches('v')
- );
-
- ensure!(
- bin_path.exists(),
- "Package binary does not exist: {}",
- bin_path.display()
- );
-
- ensure!(
- out_dir.exists(),
- "Build's out directory does not exist: {}",
- out_dir.display()
- );
-
- let _ = std::fs::remove_dir_all(&dist_dir);
- std::fs::create_dir_all(&dist_dir)?;
-
- let tar_gz = File::create(&pkg_path)?;
- let enc = GzEncoder::new(tar_gz, Compression::default());
- let mut tar = Builder::new(enc);
-
- tar.append_path_with_name(bin_path, PathBuf::from("bin").join(BIN_NAME))?;
- tar.append_dir_all(".", out_dir)?;
- PKG_INCLUDE.iter().try_for_each(|p| tar.append_path(p))?;
-
- tar.into_inner()?.finish()?;
-
- Ok(pkg_path)
-}
-
-pub fn find_out_dir<P: AsRef<Path>>(profile: P) -> Result<PathBuf> {
- let build_dir = PathBuf::from("target").join(profile).join("build");
-
- build_dir
- .canonicalize()
- .and_then(|p| p.read_dir())
- .map_err(|_| {
- anyhow::anyhow!(
- "Package build directory does not exist: {}",
- build_dir.display()
- )
- })?
- .flatten()
- .filter_map(|d| {
- d.file_name()
- .to_str()?
- .starts_with(BIN_NAME)
- .then(|| d.path().join("invoked.timestamp"))
- .filter(|p| p.exists())
- })
- .reduce(|acc, path_buf| {
- std::cmp::max_by_key(path_buf, acc, |p| {
- p.metadata()
- .and_then(|m| m.modified())
- .unwrap_or(std::time::SystemTime::UNIX_EPOCH)
- })
- })
- .map(|p| p.with_file_name("out"))
- .ok_or(anyhow::anyhow!(
- "Package out directory not found in build directory: {}",
- build_dir.display()
- ))
-}
diff --git a/xtask/src/lib.rs b/xtask/src/lib.rs
deleted file mode 100644
index 26dcbd1..0000000
--- a/xtask/src/lib.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-const BIN_NAME: &str = "projectr";
-const PKG_VER: &str = env!("CARGO_PKG_VERSION");
-const PKG_INCLUDE: &[&str] = &[
- "bin/tmux-projectr",
- "CONTRIBUTING.md",
- "README.md",
- "LICENSE",
-];
-
-pub mod dist;
-pub mod release;
-
-/// Parse version from git describe output.
-pub fn git_version() -> anyhow::Result<semver::Version> {
- let stdout = std::process::Command::new("git")
- .arg("describe")
- .arg("--long")
- .arg("--abbrev=7")
- .output()?
- .stdout;
-
- std::str::from_utf8(&stdout)?
- .trim()
- .trim_start_matches('v')
- .replacen("-g", ".g", 1)
- .replacen('-', "-r", 1)
- .parse()
- .map_err(Into::into)
-}
-
diff --git a/xtask/src/main.rs b/xtask/src/main.rs
index 1de4147..5dd79c2 100644
--- a/xtask/src/main.rs
+++ b/xtask/src/main.rs
@@ -15,7 +15,8 @@ use clap::{Parser, Subcommand};
use flate2::{write::GzEncoder, Compression};
use once_cell::sync::Lazy;
use tar::Builder;
-use xtask::release;
+
+mod release;
const PKG_NAME: &str = "projectr";
const PKG_VER: &str = env!("CARGO_PKG_VERSION");
diff --git a/xtask/src/release/bump.rs b/xtask/src/release/bump.rs
index 7a817e7..76218eb 100644
--- a/xtask/src/release/bump.rs
+++ b/xtask/src/release/bump.rs
@@ -1,7 +1,7 @@
use std::{
fmt::Display,
fs::File,
- io::{BufRead, BufReader, BufWriter, Read, Write},
+ io::{BufReader, BufWriter, Read, Write},
path::Path,
process::Command,
str::FromStr,
@@ -50,12 +50,6 @@ pub struct Bump {
}
impl Bump {
- pub fn new(major: u64, minor: u64, patch: u64, level: Level) -> Self {
- let version = Version::new(major, minor, patch);
- let next = level.bump(&version);
- Self { version, next }
- }
-
fn check_modified<P>(path: P) -> Result<bool>
where
P: AsRef<Path>,