aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-06 11:28:45 -0500
committerCraig Jennings <c@cjennings.net>2026-06-06 11:28:45 -0500
commitbe0feb2b0d0070f23bc9cd348c877aa3ad6c8b7b (patch)
treea374f1a4865e8cbcedcc488ad2eee5335b917e74 /Makefile
parent7757f6909bfcc20211e8ae1f4ad364082ca924f5 (diff)
downloadduet-be0feb2b0d0070f23bc9cd348c877aa3ad6c8b7b.tar.gz
duet-be0feb2b0d0070f23bc9cd348c877aa3ad6c8b7b.zip
fix: build route-specific rsync specs and defer both-remote to Phase 6
duet--rsync-command built one direct rsync argv for every pair, rendering each remote endpoint as host:path. That is right when at most one endpoint is remote, but rsync refuses a source and destination that are both remote, so the argv was unexecutable for every remote-to-remote route, not just the round-trip. Now rsync builds a single argv only for :local and :local-remote, the routes it can run in one invocation. A both-remote pair returns a deferred spec: nil argv, an :exec-mode marker, and the route. Phase 6 reads the route to run rsync on a host (same-host), route through this machine (round-trip), or go direct host-to-host when the override is set. transfer-spec now carries the classified :src-endpoint and :dst-endpoint alongside the route, so execution has the structured endpoints and never has to reinterpret an argv string. The runnable-shape check from the in-process-mode fix extends to accept :exec-mode, so a deferred spec reads as a real plan rather than a broken nil-argv command. Tests cover local-to-remote and remote-to-local argv shapes including a port, and the same-host, round-trip, and direct routes each producing a deferred spec.
Diffstat (limited to 'Makefile')
0 files changed, 0 insertions, 0 deletions