84 lines
2.7 KiB
Go
84 lines
2.7 KiB
Go
|
|
// /futriis/pkg/utils/colors.go
|
|||
|
|
// Пакет utils предоставляет вспомогательные функции для форматирования вывода
|
|||
|
|
|
|||
|
|
package utils
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"fmt"
|
|||
|
|
"strings"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// Цветовые коды ANSI
|
|||
|
|
const (
|
|||
|
|
ColorReset = "\033[0m"
|
|||
|
|
ColorRed = "\033[31m"
|
|||
|
|
ColorGreen = "\033[32m"
|
|||
|
|
ColorYellow = "\033[33m"
|
|||
|
|
ColorBlue = "\033[34m"
|
|||
|
|
ColorCyan = "\033[36m"
|
|||
|
|
ColorPromptCode = "\033[38;5;39m" // Ярко-синий для приглашения
|
|||
|
|
ColorDeepSkyBlue = "\033[38;2;0;191;255m" // #00bfff - Глубокий небесно-голубой
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// GetPrompt возвращает строку приглашения с цветом
|
|||
|
|
func GetPrompt() string {
|
|||
|
|
return ColorPromptCode + "futriis:~> " + ColorReset
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// PrintInfo выводит информационное сообщение
|
|||
|
|
func PrintInfo(format string, args ...interface{}) {
|
|||
|
|
fmt.Printf(ColorBlue+"[INFO] "+format+ColorReset+"\n", args...)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// PrintSuccess выводит сообщение об успехе
|
|||
|
|
func PrintSuccess(format string, args ...interface{}) {
|
|||
|
|
fmt.Printf(ColorGreen+"[OK] "+format+ColorReset+"\n", args...)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// PrintWarning выводит предупреждающее сообщение
|
|||
|
|
func PrintWarning(format string, args ...interface{}) {
|
|||
|
|
fmt.Printf(ColorYellow+"[WARNING] "+format+ColorReset+"\n", args...)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// PrintError выводит сообщение об ошибке
|
|||
|
|
func PrintError(format string, args ...interface{}) {
|
|||
|
|
fmt.Printf(ColorRed+"[ERROR] "+format+ColorReset+"\n", args...)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// PrintBanner выводит приветственный баннер при запуске
|
|||
|
|
func PrintBanner() {
|
|||
|
|
banner := `
|
|||
|
|
F U T R I I S
|
|||
|
|
Distributed Database System
|
|||
|
|
`
|
|||
|
|
|
|||
|
|
// Верхняя граница цветом #00bfff
|
|||
|
|
fmt.Print(ColorDeepSkyBlue + strings.Repeat("═", 35) + "\n" + ColorReset)
|
|||
|
|
|
|||
|
|
// Баннер построчно с выравниванием
|
|||
|
|
lines := strings.Split(banner, "\n")
|
|||
|
|
for _, line := range lines {
|
|||
|
|
if line != "" {
|
|||
|
|
// Центрируем текст
|
|||
|
|
padding := (35 - len(line)) / 2
|
|||
|
|
if padding < 0 {
|
|||
|
|
padding = 0
|
|||
|
|
}
|
|||
|
|
// Левая граница цветом #00bfff
|
|||
|
|
fmt.Print(ColorDeepSkyBlue + "║" + ColorReset + strings.Repeat(" ", padding))
|
|||
|
|
|
|||
|
|
// Логотип и описание тоже цветом #00bfff
|
|||
|
|
fmt.Print(ColorDeepSkyBlue + line + ColorReset)
|
|||
|
|
|
|||
|
|
// Правая граница
|
|||
|
|
fmt.Println(strings.Repeat(" ", 35-len(line)-padding) + ColorDeepSkyBlue + "║" + ColorReset)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Нижняя граница цветом #00bfff
|
|||
|
|
fmt.Print(ColorDeepSkyBlue + strings.Repeat("═", 35) + "\n" + ColorReset)
|
|||
|
|
|
|||
|
|
// Версия
|
|||
|
|
fmt.Print(ColorDeepSkyBlue + "Версия 0.1.0\n\n" + ColorReset)
|
|||
|
|
}
|