Crate timelord

Source
Expand description

§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.

Structs§

Cache
Hash
The seahash of a file
HashedFile
RelativePath
Represents a relative path within the workspace
Workspace
Represents a workspace with a source directory

Constants§

TIMELORD_CACHE_VERSION

Functions§

bad_cache_disclaimer
cache_info
read_cache
read_or_create_cache
sync
walk_source_dir