func()

in fast-build-update-tool/internal/runner/instance_updater_factory.go [39:71]


func (i *instanceUpdaterFactory) Create(ctx context.Context, verbose bool, sshKey ssh.Signer, updateScript string, sshPort int32, instance *gamelift.Instance) (InstanceUpdater, error) {
	instanceLogger := i.logger.With(
		"instanceId", instance.InstanceId,
		"ipAddress", instance.IpAddress)

	sshEnabler, err := tools.NewSSHEnabler(instanceLogger, instance, i.gameLiftClient, sshKey.PublicKey(), sshPort)
	if err != nil {
		return nil, err
	}

	fileUploader, err := tools.NewFileUploader(instanceLogger, instance, i.privateKeyPath, i.GetFilesToUpload(updateScript), sshPort)
	if err != nil {
		return nil, err
	}

	commandRunner, err := tools.NewSSHCommandRunner(instanceLogger, updateScript, sshPort, sshKey, instance)
	if err != nil {
		return nil, err
	}

	progressTracker, err := NewInstanceProgressWriter(instance, verbose)
	if err != nil {
		return nil, err
	}

	return &instanceUpdater{
		sshEnabler:      sshEnabler,
		fileUploader:    fileUploader,
		commandRunner:   commandRunner,
		logger:          instanceLogger,
		progressTracker: progressTracker,
	}, nil
}