Allow non-local SSH target usernames

Updates updateRemoteTarget(host:) so it does not force the user to be
the user of local machine, when self.remoteTarget does not specify a
user.

This makes it possible, in Settings / General / SSH target, to specify
an SSH target for a remote machine where the user name is different.
This commit is contained in:
Alexis Gallagher 2026-01-25 19:15:42 -08:00
parent a989fe8af9
commit 0df70ea2d1

View File

@ -413,10 +413,17 @@ final class AppState {
}
private func updateRemoteTarget(host: String) {
let parsed = CommandResolver.parseSSHTarget(self.remoteTarget)
let user = parsed?.user ?? NSUserName()
let port = parsed?.port ?? 22
let assembled = port == 22 ? "\(user)@\(host)" : "\(user)@\(host):\(port)"
let trimmed = self.remoteTarget.trimmingCharacters(in: .whitespacesAndNewlines)
guard let parsed = CommandResolver.parseSSHTarget(trimmed) else { return }
let trimmedUser = parsed.user?.trimmingCharacters(in: .whitespacesAndNewlines)
let user = (trimmedUser?.isEmpty ?? true) ? nil : trimmedUser
let port = parsed.port
let assembled: String
if let user {
assembled = port == 22 ? "\(user)@\(host)" : "\(user)@\(host):\(port)"
} else {
assembled = port == 22 ? host : "\(host):\(port)"
}
if assembled != self.remoteTarget {
self.remoteTarget = assembled
}