timelord

Crates.iotimelord
lib.rstimelord
version3.0.2
created_at2025-03-22 12:14:37.777646+00
updated_at2025-03-22 15:23:21.098354+00
descriptionA Rust library to preserve file timestamps (mtime) between builds, even with fresh git checkouts
homepage
repositoryhttps://github.com/fasterthanlime/timelord
max_upload_size
id1601759
size48,039
Amos Wenger (fasterthanlime)

documentation

README

timelord

Crates.io Documentation License: MIT OR Apache-2.0

A Rust library to preserve file timestamps (mtime) between builds, even with fresh git checkouts.

Usage

Timelord provides the sync function to preserve file timestamps between builds:

use timelord::sync;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    sync("path/to/source", "path/to/cache")?;
    Ok(())
}

The sync function takes two arguments:

  • source_dir: Directory containing files to preserve timestamps for
  • cache_dir: Persistent directory to store the timestamp database across builds

Timelord stores a database of file sizes and hashes, and restores old timestamps if file contents remain unchanged.

For CLI usage, see the timelord-cli crate.

Additional Configuration

To ensure Timelord works properly, especially in CI environments, it's important to use the -Zremap-cwd-prefix rustc flag. This flag helps maintain consistent paths across different build environments.

License

Licensed under either of

at your option.

Commit count: 25

cargo fmt