snapdir-cli 1.7.0

snapdir CLI implementation: the library behind the `snapdir` binary (which ships in the `snapdir` crate).
Documentation
```
$ snapdir diff --help
Compare two sides, each a set of manifests, reporting file-level differences — reading MANIFESTS ONLY

Usage: snapdir diff [OPTIONS]

Options:
      --cache-dir <DIR>
          Directory where the object cache is stored
          
          [env: SNAPDIR_CACHE_DIR=]

      --from <REF>
          FROM-side ref: a manifest-store URI (enumerated) and/or, with the global `--id`, a single pinned manifest. Repeatable; refs are UNIONED into the FROM side

      --catalog <NAME>
          Catalog adapter to use
          
          [env: SNAPDIR_CATALOG=]

      --to <REF>
          TO-side ref: a manifest-store URI (enumerated) and/or a pinned manifest. Repeatable; refs are UNIONED into the TO side

      --all
          Also emit unchanged (equal) paths

      --store <URI>
          Store URI: `protocol://location/path`
          
          [env: SNAPDIR_STORE=]

      --json
          Emit a JSON array of `{status, path}` objects instead of porcelain

      --objects-store <URI>
          Shared object-pool store URI: when set, content OBJECTS route to this pool's `.objects/` while MANIFESTS route to `--store`'s `.manifests/`
          
          [env: SNAPDIR_OBJECTS_STORE=]

      --exit-code
          Exit 1 when any difference is found (git `diff --exit-code` semantics); the default exits 0 regardless

      --id <ID>
          Snapshot ID to operate on

      --exclude <PATTERN>
          Exclude paths matching PATTERN

      --on-conflict <POLICY>
          Policy for an intra-side path collision (same path, differing content unioned on one side)

          Possible values:
          - error:     A differing-content collision is a hard error (default)
          - last-wins: The last ref contributing the path wins
          
          [default: error]

      --paths <PATTERN>
          Only include paths matching PATTERN

      --linked
          Use symlinks instead of copies

      --force
          Force an action to run

      --purge
          Purge objects with invalid checksums

      --keep
          Keep the staging directory

      --dryrun
          Run without making any changes

      --verbose
          Enable verbose output

      --debug
          Enable debug output

      --no-progress
          Disable the live progress line (transfers still run)
          
          [env: SNAPDIR_NO_PROGRESS=]

  -q, --quiet
          Suppress stderr banners and the live progress line

      --color <WHEN>
          When to colorize progress output: auto, always, or never
          
          [default: auto]

      --location <DIR|STORE>
          Context (directory or store) for catalog queries

  -j, --jobs <N>
          Max concurrent object transfers (0/auto = number of CPUs, capped)
          
          [env: SNAPDIR_JOBS=]

      --walk-jobs <N>
          Max parallel file-hashing jobs during the directory walk (0/auto = number of CPUs, capped). Distinct from --jobs (transfer concurrency)
          
          [env: SNAPDIR_WALK_JOBS=]

      --limit-rate <RATE>
          Limit total transfer bandwidth, e.g. 10M, 512K, 1G (wget-style; aggregate across all transfers)
          
          [env: SNAPDIR_LIMIT_RATE=]

      --adaptive[=<FRACTION>]
          Adaptively tune transfer concurrency/bandwidth toward a fraction (default 0.8) of measured CPU/network capacity; backs off under contention. Opt-in; default is full speed.
          
          Presence (with or without a value) opts in; the optional value is the politeness fraction in `(0.0, 1.0]`.
          
          [env: SNAPDIR_ADAPTIVE=]

      --max-jobs <N>
          Adaptive concurrency ceiling (only meaningful with `--adaptive`). When unset, defaults to the auto concurrency; clamped to a sane upper bound
          
          [env: SNAPDIR_MAX_JOBS=]

      --max-retries <N>
          Total retry attempts per network request, including the first (default 5)

      --retry-base-ms <MS>
          Base backoff delay in milliseconds for request retries (default 250)

      --retry-max-ms <MS>
          Maximum backoff delay in milliseconds for request retries (default 30000)

      --max-requests <N>
          Cap request rate (req/s); 0/unset uses the per-backend default

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

```