- Fixed major performance issue in verify command where files were being hashed twice unnecessarily
- Removed duplicate database insertion code in output.rs, now using the centralized insert_single_hash function
- Improved error handling in database initialization by replacing panic-prone expect() calls with proper error propagation
- Applied rustfmt formatting to entire codebase for consistent code style
- Enhanced maintainability by reducing code duplication and improving function organization
- These improvements ensure better performance and reliability when processing large datasets
- Fixed critical bug where "hash match" skip was incorrectly triggered for non-existent destination files
- Improved file existence checking logic in copy command with clearer separation of conditions
- Added redundant safety checks to prevent attempting to read non-existent files
- Fixed double-buffering performance issue in direct file copy operations
- Enhanced error handling for edge cases where files might disappear during processing
- Fixed
--decompressoption to properly remove the .gz extension from output files - Modified destination path handling to correctly strip .gz extension when decompressing
- Added
--hash-uncompressed(-U) option to always hash the uncompressed content even when source is compressed - This is particularly useful when copying compressed files and wanting to store the hash of the original uncompressed content
- Implemented consistently across all commands (hash, verify, copy, download)
- Fixed handling of multiple compression-related flags to ensure consistent behavior
- Added support for specifying command line options as defaults in
config.toml - Added
[options]section to config file for setting command line defaults - Improved documentation around compression options and flag precedence
- Added fallback for missing config file with sensible defaults
- Enhanced documentation for database behavior and Windows path handling
- Clarified that command line options always override config file settings
- Modified download command to output a single JSON object per download that combines both download status and hash information
- Fixed error handling across multiple commands to be more consistent
- Updated error type to be cloneable and handle errors more uniformly
- Fixed a bug where
copying compressed files would incorrectly duplicate extensions (e.g.,.tar.gzbecoming.tar.gz.gz) - Fixed Windows paths having a
\\\\?\\prefix
- Errors no longer fatal by default (Removed
--continue-on-error) - Added
--fail-fastto make errors fatal - Unified output control under
--silent-failures(replaces--skip-failuresand--silent-skip) - Error messages and skip notifications shown by default
- Added short options for CLI arguments
- Updated test file to reflect new changes
- There were many issues with arguments not behaving properly now fixed:
- Fixed stdin handling to properly respect json_only and sql_only flags
- Fixed hash_compressed option handling in all commands
- Made compression handling consistent across hash, verify, and copy commands
- Fixed decompression handling in copy command
- Fixed compression-related argument handling in file existence checks
- Fixed verify command to properly give compressed hashes
--hash-bothis now properly implemented across all commands- Console output added for skipped files by default
--silent-skipadded to silence that console output- General code cleanup
- rustfmt run
- Bump dependencies
- Only
hashwould initialize databases that don't exist, now all commands do
- Add
--db-pathoption to override the database path in the config file - Add
--skip-existingand--no-hash-existingoptions forcopyto not copy files that already exist in the target directory - Update README to contain all available CLI options
- Minor code cleanup
- Download changes:
- Downloading from a URL list file will no longer wait until the list is downloaded to display json
- JSON output improved
- Handle errors relating to downloading from URL list files
- Minor code cleanup
--skip-failures, etc implemented fordownload- Add compressed file contents hashing support to
hash downloadnow properly download from a list- Make Cargo.toml description up-to-date
- Rewrote usage of README, added other sections
- Implement testing
- Fixed a bug with
--store-source-pathusing the short-swhich is already in use - Fixed a bug with
downloadnot creating the directory structures it should have been - Clean up lib.rs a bit
- Remove excess macros
- Implement compression for
copyanddownload, as well as support for decompression inverify downloadnow uses rustls instead of the system's native TLS implementation- Add
--no-clobberfordownload - Create this changelog, backfill changes
downloadcommand implemented- Ran
rustfmtfor a consistent code style, which caused many changes to the files
verifycommand was producing the wrong hashes because they weren't stored/accessed in a deterministic way
copycommand implemented
verifycommand implemented
- Big changes in preparation for future versions
- Implemented the backend for the new command interface
- JSON output changed
--skip-filesremoved
- Properly handle errors that were previously not handled well
- Core functionality has been rewritten in library format that can be used outside this program
- Cleanup
- Bump dependencies
--sql-outcan now be used with--json-out
- SQLite databases finally supported
- Entire program is now async
- Bring in database driver, implement Error for it
- Cleanup like macro usage
- Fix groestl384 being spelled wrong in config
- Created sqlite schema document
- Add
--stdinand--skip-filesarguments
- Add
-vvv,-qqqfunctionality to control output of logging - Remove
--write-config-template - Major changes to core functionality
- Add additional hashes
- Add config files
- Add JSON output
- General improvements
rustfmtran
- CRC32 now logged
- Add initial CLI args, currently controlling each hash and various other things
- Breaking out code into more files
- Begin simultaneous hashing implementation
- Proofs of concept, nothing useful