The --append and --force flags only work with local parquet files. When using --r2, both flags are silently ignored with no warning.
In build.rs, the source-already-processed check at line 87 gates on !args.r2.enabled:
if !args.force && !args.r2.enabled && args.output.exists() {
And the append merge at line 154 does the same:
if args.append && !args.r2.enabled && args.output.exists() {
So shaha build --r2 --append --from seclists:rockyou.txt silently writes a fresh file every time, never merging with existing records in R2. Same for --force - it's a no-op because the skip logic never runs in R2 mode anyway.
At minimum this should warn when these flags are passed but can't be applied. Better would be actually supporting append/dedup for R2 storage, but that's a bigger change since it would need to read back from R2 first.
The
--appendand--forceflags only work with local parquet files. When using--r2, both flags are silently ignored with no warning.In
build.rs, the source-already-processed check at line 87 gates on!args.r2.enabled:And the append merge at line 154 does the same:
So
shaha build --r2 --append --from seclists:rockyou.txtsilently writes a fresh file every time, never merging with existing records in R2. Same for--force- it's a no-op because the skip logic never runs in R2 mode anyway.At minimum this should warn when these flags are passed but can't be applied. Better would be actually supporting append/dedup for R2 storage, but that's a bigger change since it would need to read back from R2 first.