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.