in fast-build-update-tool/internal/tools/ssh_enabler.go [34:70]
func NewSSHEnabler(logger *slog.Logger, instance *gamelift.Instance, instanceAccessGetter GameLiftInstanceAccessGetter, localPublicKey ssh.PublicKey, sshPort int32) (*SSHEnabler, error) {
localPublicKeyStr := convertPublicKeyToString(localPublicKey)
pty, err := newPtyCommandRunner()
if err != nil {
return nil, err
}
var updateCommands []string
var isNewCommandOutput func(output string) bool
switch instance.OperatingSystem {
case config.OperatingSystemWindows:
updateCommands = windowsSSHEnableCommands(localPublicKeyStr, sshPort)
isNewCommandOutput = IsNewCommandOutputWindows
case config.OperatingSystemLinux:
updateCommands = linuxSSHEnableCommands(localPublicKeyStr)
isNewCommandOutput = IsNewCommandOutputLinux
default:
return nil, config.UnknownOperatingSystemError(fmt.Sprint(instance.OperatingSystem))
}
enabler := &SSHEnabler{
logger: logger.With("context", "SSHEnabler"),
pty: pty,
instance: instance,
instanceAccessGetter: instanceAccessGetter,
clientPublicKey: localPublicKeyStr,
isNewCommandOutput: isNewCommandOutput,
commandsToRun: updateCommands,
}
return enabler, enabler.Validate()
}