package utils

import (
	"fmt"
)

const (
	colorReset string = "\033[0m"

	colorRed    string = "\033[31m"
	colorGreen  string = "\033[32m"
	colorYellow string = "\033[33m"
	colorBlue   string = "\033[34m"
	colorPurple string = "\033[35m"
	colorCyan   string = "\033[36m"
	colorWhite  string = "\033[37m"
)

func PrintOutput(message string, output []byte) {
	if message != "" {
		HighlightPrint(message)
	}
	fmt.Println(string(output))
}

func HighlightPrint(message string) {
	fmt.Println()
	fmt.Println(colorBlue, message, colorReset)
}

func SuccessPrint(message string) {
	fmt.Println()
	fmt.Println(colorGreen, message, colorReset)
}

func ErrorPrint(message string) {
	fmt.Println()
	fmt.Println(colorRed, message, colorReset)
}

func InputPrint(message string) {
	// adding \n before setting colorful output can
	// remove the first space in the colorful output
	fmt.Println()
	fmt.Println(colorYellow, message, colorReset)
}

func PrintMenu(question string, taskNames []string) {
	if question != "" {
		InputPrint(fmt.Sprintf("[%s]", question))
	}

	// adding \n before setting colorful output can
	// remove the first space in the colorful output
	menuContent := "\n"

	for i, name := range taskNames {
		menuContent += fmt.Sprintf("%d. %s\n", i+1, name)
	}

	fmt.Println(colorCyan, menuContent, colorReset)
}

func MenuPrint(question, menu string) {
	if question != "" {
		InputPrint(fmt.Sprintf("[%s]", question))
	}

	// 	menu := `
	// 1. Build Portainer EE/CE All
	// 2. Build Portainer EE/CE Frontend
	// 3. Build Portainer EE/CE Backend
	// 4. Generate Portainer EE/CE JWT
	// 5. Run Before Commit [Portainer EE/CE]
	// 6. Get Portainer CE API Reference
	// 7. Run Before Commit [k8s]
	// 8. Build Portainer Agent
	// 9. Cleanup Temporary Volume
	// 	`

	fmt.Println(colorCyan, menu, colorReset)
}
