package conformance

import (
	"bytes"
	"fmt"

	"golang.org/x/sys/unix"

	"github.com/aws/eks-anywhere/internal/pkg/files"
)

const (
	destinationFile = "sonobuoy"
	sonobuoyDarwin  = "https://github.com/vmware-tanzu/sonobuoy/releases/download/v0.53.2/sonobuoy_0.53.2_darwin_amd64.tar.gz"
	sonobuoyLinux   = "https://github.com/vmware-tanzu/sonobuoy/releases/download/v0.53.2/sonobuoy_0.53.2_linux_amd64.tar.gz"
)

func Download() error {
	var err error
	var utsname unix.Utsname
	err = unix.Uname(&utsname)
	if err != nil {
		return fmt.Errorf("uname call failure: %v", err)
	}

	var downloadFile string
	sysname := string(bytes.Trim(utsname.Sysname[:], "\x00"))
	if sysname == "Darwin" {
		downloadFile = sonobuoyDarwin
	} else {
		downloadFile = sonobuoyLinux
	}
	fmt.Println("Downloading sonobuoy for " + sysname + ": " + downloadFile)
	err = files.GzipFileDownloadExtract(downloadFile, destinationFile, "")
	if err != nil {
		return fmt.Errorf("failed to download sonobouy: %v", err)
	}
	return nil
}