Commit Graph

39 Commits

Author SHA1 Message Date
a9f0d2abe4 Update README to reflect current API (FileProgress was already a channel) 2025-12-17 17:19:08 -08:00
09e8da0855 Update CLAUDE.md and clean up completed TODOs in README 2025-12-17 17:09:33 -08:00
efa4bb929a Update README: mark FIXMEs as resolved 2025-12-17 17:08:37 -08:00
2549695ab0 Update README TODO with completed items 2025-12-17 17:03:05 -08:00
c218fe56e9 Add atomic writes, humanized sizes, debug logging, and -v/-q per-command
- Atomic writes for mfer gen: writes to temp file, renames on success,
  cleans up temp on error/interrupt. Prevents empty manifests on Ctrl-C.
- Humanized byte sizes using dustin/go-humanize (e.g., "10 MiB" not "10485760")
- Progress lines clear when done (using ANSI escape \r\033[K])
- Debug logging when files are added to manifest (mfer gen -vv)
- Move -v/-q flags from global to per-command for better UX
- Add tests for atomic write behavior with failing filesystem mock
2025-12-17 15:57:20 -08:00
0e86562c09 Exclude dotfiles by default, add --include-dotfiles flag
Changed the default behavior to exclude dotfiles (files/dirs starting with .)
which is the more common use case. Added --include-dotfiles flag for when
hidden files need to be included in the manifest.
2025-12-17 15:10:22 -08:00
21028af9aa Replace gzip with zstd compression
Use zstd with SpeedBestCompression level for better compression
ratios. Remove gzip support entirely. Include generated protobuf
file to allow building without protoc.
2025-12-17 14:49:30 -08:00
c5ca3e2ced Change FileProgress callback to channel-based progress
Replace callback-based progress reporting in Builder.AddFile with
channel-based FileHashProgress for consistency with EnumerateStatus
and ScanStatus patterns. Update scanner.go to use the new channel API.
2025-12-17 14:30:10 -08:00
fded1a0393 Remove generateInner, now handled by Builder
- Remove generateInner() from serialize.go
- Update generate() to error if pbInner not set
- Remove legacy tests that depended on old code path
- Update TODO item to reflect removal
2025-12-17 11:27:41 -08:00
48c3c09d85 Rename ManifestBuilder to Builder 2025-12-17 11:27:41 -08:00
f3be3eba84 Add TODO: change FileProgress callback to channel-based 2025-12-17 11:27:41 -08:00
5e65b3a0fd Add TODO section to README with prioritized task list 2025-12-17 11:27:41 -08:00
155ebe9a78 Merge branch 'main' into next 2025-12-17 19:01:52 +00:00
dc2ea47f6a Add testable CLI with dependency injection and new scanner/checker packages
Major changes:
- Refactor CLI to accept injected I/O streams and filesystem (afero.Fs)
  for testing without touching the real filesystem
- Add RunOptions struct and RunWithOptions() for configurable CLI execution
- Add internal/scanner package with two-phase manifest generation:
  - Phase 1 (Enumeration): walk directories, collect metadata
  - Phase 2 (Scan): read contents, compute hashes, write manifest
- Add internal/checker package for manifest verification with progress
  reporting and channel-based result streaming
- Add mfer/builder.go for incremental manifest construction
- Add --no-extra-files flag to check command to detect files not in manifest
- Add timing summaries showing file count, size, elapsed time, and throughput
- Add comprehensive tests using afero.MemMapFs (no real filesystem access)
- Add contrib/usage.sh integration test script
- Fix banner ASCII art alignment (consistent spacing)
- Fix verbosity levels so summaries display at default log level
- Update internal/log to support configurable output writers
2025-12-17 11:00:55 -08:00
2717685619 update readme to conform with my new readme howto standards (#8)
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #8

manually approving because CI is offline rn for some reason
2024-12-09 02:50:57 +00:00
7a8a1b4a4a rollup from next branch (#4)
All checks were successful
continuous-integration/drone/push Build is passing
Co-authored-by: sneak <sneak@sneak.berlin>
Reviewed-on: #4
2022-12-04 07:59:36 +00:00
7e4f8366a7 format readme, add build status badge
Some checks failed
continuous-integration/drone/push Build is failing
2022-02-01 21:45:03 -08:00
4a6469b003 fmt 2021-11-03 03:49:24 -07:00
a1fa0d8fe5 add open design questions to README 2021-10-26 02:04:43 -07:00
063c8040c0 Update 'README.md' 2021-01-19 04:00:02 +00:00
baa78caf47 Update 'README.md' 2021-01-19 03:55:01 +00:00
59237ead67 Update 'README.md' 2021-01-19 03:53:52 +00:00
169a2237a2 Update 'README.md' 2021-01-19 00:48:29 +00:00
5a3f228d74 Update 'README.md' 2021-01-19 00:44:23 +00:00
e4559405c1 Update 'README.md' 2021-01-19 00:43:55 +00:00
349b2a6ba6 Update 'README.md' 2021-01-19 00:43:34 +00:00
56b47056cf Update 'README.md' 2021-01-19 00:41:41 +00:00
002399938a Update 'README.md' 2021-01-19 00:40:43 +00:00
a52c6be641 Update 'README.md' 2021-01-19 00:02:49 +00:00
ccd61b8014 Update 'README.md' 2021-01-18 23:55:22 +00:00
04635e265f Update 'README.md' 2021-01-18 23:53:36 +00:00
28b64ffb9c Update 'README.md' 2021-01-18 23:52:58 +00:00
ac4422065e Update 'README.md' 2021-01-18 23:52:17 +00:00
eadedfe065 Update 'README.md' 2021-01-18 23:44:16 +00:00
82a038753f Update 'README.md' 2021-01-18 23:42:58 +00:00
a2079dbec3 Update 'README.md' 2021-01-18 23:41:28 +00:00
c8c89aaa3f Update 'README.md' 2021-01-18 23:38:36 +00:00
9637c8de05 Update 'README.md' 2021-01-18 23:36:40 +00:00
d015822f9f Initial commit 2021-01-18 23:33:46 +00:00