func getImagePullOptions()

in command-runner/internal/containers/docker/docker_pull.go [76:113]


func getImagePullOptions(ctx context.Context, input newDockerPullExecutorInput) (image.PullOptions, error) {
	imagePullOptions := image.PullOptions{
		Platform: input.Platform,
	}

	if input.Username != "" && input.Password != "" {
		log.Ctx(ctx).Printf("using authentication for docker pull")

		authConfig := registry.AuthConfig{
			Username: input.Username,
			Password: input.Password,
		}

		encodedJSON, err := json.Marshal(authConfig)
		if err != nil {
			return imagePullOptions, err
		}

		imagePullOptions.RegistryAuth = base64.URLEncoding.EncodeToString(encodedJSON)
	} else {
		authConfig, err := loadDockerAuthConfig(ctx, input.Image)
		if err != nil {
			return imagePullOptions, err
		}
		if authConfig.Username == "" && authConfig.Password == "" {
			return imagePullOptions, nil
		}

		encodedJSON, err := json.Marshal(authConfig)
		if err != nil {
			return imagePullOptions, err
		}

		imagePullOptions.RegistryAuth = base64.URLEncoding.EncodeToString(encodedJSON)
	}

	return imagePullOptions, nil
}