Upload files to "pkg/utils"
This commit is contained in:
parent
777a685d64
commit
13210d92b7
149
pkg/utils/colors.go
Normal file
149
pkg/utils/colors.go
Normal file
@ -0,0 +1,149 @@
|
||||
// /futriis/pkg/utils/colors.go
|
||||
// Пакет utils предоставляет утилиты для цветного вывода, логирования и форматирования строк в клиенте субд futriis
|
||||
// Для реализации цветного вывода, используются escpe-последовательности с поддержкой цветов ANSI
|
||||
// Данная цветовая схема совместима с цветовой схемой OpenIndiana
|
||||
|
||||
package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
)
|
||||
|
||||
// Цветовые коды ANSI (совместимые с OpenIndiana)
|
||||
const (
|
||||
ColorReset = "\033[0m"
|
||||
ColorRed = "\033[31m"
|
||||
ColorGreen = "\033[32m"
|
||||
ColorYellow = "\033[33m"
|
||||
ColorBlue = "\033[34m"
|
||||
ColorMagenta = "\033[35m"
|
||||
ColorCyan = "\033[36m"
|
||||
ColorWhite = "\033[37m"
|
||||
ColorBold = "\033[1m"
|
||||
ColorUnderline = "\033[4m"
|
||||
|
||||
// Яркие цвета (работают во всех терминалах)
|
||||
ColorBrightBlack = "\033[90m"
|
||||
ColorBrightRed = "\033[91m"
|
||||
ColorBrightGreen = "\033[92m"
|
||||
ColorBrightYellow = "\033[93m"
|
||||
ColorBrightBlue = "\033[94m" // Ярко-синий
|
||||
ColorBrightMagenta = "\033[95m"
|
||||
ColorBrightCyan = "\033[96m" // Яркий циан (голубой) - используется для prompt
|
||||
ColorBrightWhite = "\033[97m"
|
||||
|
||||
ColorReverse = "\033[7m" // Инвертированные цвета (для подсветки поиска)
|
||||
|
||||
// Специальные цвета для prompt
|
||||
ColorPrompt = ColorBrightCyan // Яркий циан (голубой) для приглашения
|
||||
ColorPromptCode = ColorBrightYellow // Ярко-жёлтый для кода
|
||||
|
||||
// Скрытие/показ курсора
|
||||
ColorHideCursor = "\033[?25l"
|
||||
ColorShowCursor = "\033[?25h"
|
||||
)
|
||||
|
||||
// PrintBanner выводит приветственный баннер с учетом восстановления из AOF
|
||||
func PrintBanner(clusterName string, aofRecovered bool) {
|
||||
// Добавляем пустую строку перед рамкой
|
||||
fmt.Println()
|
||||
|
||||
// Пунктирная рамка
|
||||
border := "--------------------------------------------------------------------------------"
|
||||
|
||||
fmt.Println(ColorPrompt + border + ColorReset)
|
||||
|
||||
// Выравниваем текст по левому краю
|
||||
fmt.Println(ColorPrompt + "futriix 3i²(by 03.01.2026)" + ColorReset)
|
||||
fmt.Println(ColorPrompt + "Distributed Wide-Column database with Lua Integration and lua plugins" + ColorReset)
|
||||
fmt.Println(ColorPrompt + "Cluster status: enable" + ColorReset)
|
||||
fmt.Println(ColorPrompt + "Cluster name: " + clusterName + ColorReset)
|
||||
fmt.Println(ColorPrompt + "[OK] Configuration load from config.toml" + ColorReset)
|
||||
|
||||
// Добавляем сообщение о восстановлении из AOF, если оно было
|
||||
if aofRecovered {
|
||||
fmt.Println(ColorPrompt + "[OK] Data recovered from AOF" + ColorReset)
|
||||
}
|
||||
|
||||
fmt.Println(ColorPrompt + border + ColorReset)
|
||||
fmt.Println()
|
||||
}
|
||||
|
||||
// PrintBannerWithConfig выводит баннер с информацией из конфига
|
||||
func PrintBannerWithConfig(clusterName string, aofRecovered bool) {
|
||||
PrintBanner(clusterName, aofRecovered)
|
||||
}
|
||||
|
||||
// PrintInfo выводит информационное сообщение цветом приглашения
|
||||
func PrintInfo(format string, args ...interface{}) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
fmt.Printf(ColorPrompt+"[INFO]"+ColorReset+" %s\n", msg)
|
||||
}
|
||||
|
||||
// PrintSuccess выводит сообщение об успехе
|
||||
func PrintSuccess(format string, args ...interface{}) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
fmt.Printf(ColorGreen+"[OK]"+ColorReset+" %s\n", msg)
|
||||
}
|
||||
|
||||
// PrintWarning выводит предупреждение
|
||||
func PrintWarning(format string, args ...interface{}) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
fmt.Printf(ColorYellow+"[WARN]"+ColorReset+" %s\n", msg)
|
||||
}
|
||||
|
||||
// PrintError выводит сообщение об ошибке
|
||||
func PrintError(format string, args ...interface{}) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
fmt.Printf(ColorRed+"[ERROR]"+ColorReset+" %s\n", msg)
|
||||
}
|
||||
|
||||
// PrintPromptMessage выводит сообщение цветом приглашения
|
||||
func PrintPromptMessage(format string, args ...interface{}) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
fmt.Printf(ColorPrompt + msg + ColorReset + "\n")
|
||||
}
|
||||
|
||||
// ConsoleLogger представляет простой консольный логгер
|
||||
type ConsoleLogger struct {
|
||||
enabled bool
|
||||
}
|
||||
|
||||
var consoleLogger *ConsoleLogger
|
||||
|
||||
// InitLogger инициализирует консольный логгер
|
||||
func InitLogger(logPath string) {
|
||||
consoleLogger = &ConsoleLogger{
|
||||
enabled: true,
|
||||
}
|
||||
// Игнорируем logPath для консольного логгера
|
||||
// Файловый логгер инициализируется отдельно через InitFileLogger
|
||||
}
|
||||
|
||||
// GetLogger возвращает консольный логгер
|
||||
func GetLogger() *ConsoleLogger {
|
||||
return consoleLogger
|
||||
}
|
||||
|
||||
// Log записывает сообщение в консольный логгер
|
||||
func (l *ConsoleLogger) Log(level, message string) {
|
||||
if l == nil {
|
||||
return
|
||||
}
|
||||
if !l.enabled {
|
||||
return
|
||||
}
|
||||
// Убираем вывод в консоль, только логируем в файл через файловый логгер
|
||||
// Консольный логгер больше не выводит сообщения в терминал
|
||||
}
|
||||
|
||||
// Close закрывает консольный логгер
|
||||
func (l *ConsoleLogger) Close() {
|
||||
// В простой реализации ничего не делаем
|
||||
}
|
||||
|
||||
// GetPrompt возвращает строку приглашения
|
||||
func GetPrompt() string {
|
||||
return ColorPrompt + "futriis:~> " + ColorReset
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user