Module fs

Module fs 

Source
Expand description

File system utilities for cross-platform file operations

This module provides safe, atomic file operations designed to work consistently across Windows, macOS, and Linux. All functions handle platform-specific differences such as path lengths, permissions, and separators.

§Key Features

  • Atomic operations: Files are written atomically to prevent corruption
  • Cross-platform: Handles Windows long paths, Unix permissions, and path separators
  • Parallel operations: Async versions for processing multiple files concurrently
  • Safety: Path traversal prevention and safe path handling
  • Checksum validation: SHA-256 checksums for data integrity

§Examples

use agpm_cli::utils::fs::{ensure_dir, safe_write, calculate_checksum};
use std::path::Path;

// Create directory structure
ensure_dir(Path::new("output/agents"))?;

// Write file atomically
safe_write(Path::new("output/config.toml"), "[sources]")?;

// Verify file integrity
let checksum = calculate_checksum(Path::new("output/config.toml"))?;
println!("File checksum: {}", checksum);

§Platform Considerations

§Windows

  • Supports long paths (>260 characters) using UNC prefixes
  • Handles case-insensitive file systems
  • Manages file permissions and attributes correctly

§Unix/Linux

  • Preserves file permissions during copy operations
  • Handles case-sensitive file systems
  • Supports symbolic links appropriately

§macOS

  • Handles HFS+ case-insensitive by default
  • Supports extended attributes
  • Works with case-sensitive APFS volumes

Re-exports§

pub use dirs::copy_dir;
pub use dirs::copy_dir_all;
pub use dirs::ensure_dir;
pub use dirs::ensure_dir_exists;
pub use dirs::ensure_parent_dir;
pub use dirs::remove_dir_all;
pub use atomic::atomic_write;
pub use atomic::atomic_write_multiple;
pub use atomic::safe_write;
pub use paths::find_project_root;
pub use paths::get_global_config_path;
pub use paths::is_safe_path;
pub use paths::normalize_path;
pub use discovery::find_files;
pub use temp::TempDir;
pub use metadata::calculate_checksum;
pub use metadata::calculate_checksums_parallel;
pub use metadata::compare_file_times;
pub use metadata::dir_size;
pub use metadata::file_exists_and_readable;
pub use metadata::get_directory_size;
pub use metadata::get_modified_time;
pub use parallel::copy_dirs_parallel;
pub use parallel::copy_files_parallel;
pub use parallel::read_files_parallel;
pub use formats::create_temp_file;
pub use formats::read_json_file;
pub use formats::read_text_file;
pub use formats::read_text_file_with_retry;
pub use formats::read_toml_file;
pub use formats::read_yaml_file;
pub use formats::write_json_file;
pub use formats::write_text_file;
pub use formats::write_toml_file;
pub use formats::write_yaml_file;

Modules§

atomic
Atomic file write operations using temp-and-rename strategy.
dirs
Directory operations for creating, copying, and removing directories.
discovery
File discovery and search operations.
formats
File format operations for reading and writing structured data files.
metadata
File metadata operations including size calculation, checksums, and file queries.
parallel
Parallel file operations for concurrent processing of multiple files and directories.
paths
Path utilities for normalization, validation, and discovery.
temp
Temporary directory management with RAII cleanup.