feat: same-host SSH optimization (Exec cp/mv), per-file progress for all remote copies
- SSHClient.Exec() and ExecWithProgress() for server-side commands
- SSHHost.SameAs() and SSHClient.SameHostAs() for host comparison
- Same-host copy uses ExecWithProgress('cp -rv') with per-line progress
- Same-host move uses Exec('mv'), instant server-side rename
- CopyDirFromRemote/ToRemote/BetweenRemotes with per-file progress callbacks
- Context cancellation support for all remote copy operations
- Two-phase remote copy: count files first, then transfer with progress bar
- Fix: consistent modal colors (Enter=Accent, Cancel=CancelButton, Background=Accent)
This commit is contained in:
parent
8352441bda
commit
fd2aa80894
3 changed files with 335 additions and 33 deletions
|
|
@ -51,6 +51,12 @@ func (h SSHHost) Addr() string {
|
|||
return h.HostName + ":" + h.Port
|
||||
}
|
||||
|
||||
// SameAs returns true if two hosts point to the same server.
|
||||
func (h SSHHost) SameAs(other SSHHost) bool {
|
||||
return h.HostName == other.HostName &&
|
||||
(h.Port == other.Port || (h.Port == "" && other.Port == "22") || (h.Port == "22" && other.Port == ""))
|
||||
}
|
||||
|
||||
// HostStore manages SSH hosts from both ~/.ssh/config and user-added hosts.
|
||||
type HostStore struct {
|
||||
customHosts []SSHHost
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue