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
20 lines
397 B
Bash
Executable File
20 lines
397 B
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# usage.sh - Generate and check a manifest from the repo
|
|
# Run from repo root: ./contrib/usage.sh
|
|
|
|
TMPDIR=$(mktemp -d)
|
|
MANIFEST="$TMPDIR/index.mf"
|
|
|
|
cleanup() {
|
|
rm -rf "$TMPDIR"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
echo "Building mfer..."
|
|
go build -o "$TMPDIR/mfer" ./cmd/mfer
|
|
|
|
"$TMPDIR/mfer" generate --ignore-dotfiles -o "$MANIFEST" .
|
|
"$TMPDIR/mfer" check --base . "$MANIFEST"
|