Upload files to "pkg/utils"
This commit is contained in:
parent
44a4f345b8
commit
69fccb8104
143
pkg/utils/colors(for OpenIndiana).go
Normal file
143
pkg/utils/colors(for OpenIndiana).go
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
// /futriis/pkg/utils/colors.go
|
||||||
|
// Пакет utils предоставляет утилиты для цветного вывода, логирования и форматирования строк в клиенте субд futriis
|
||||||
|
// Для реализации цветного вывода, используются escpe-последовательности с поддержкой цветов ANSI
|
||||||
|
// Днная цветовая схема совместима с цветовой схемой OpenIndiana
|
||||||
|
|
||||||
|
package utils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Цветовые коды 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" // Ярко-синий - используется для prompt
|
||||||
|
ColorBrightMagenta= "\033[95m"
|
||||||
|
ColorBrightCyan = "\033[96m"
|
||||||
|
ColorBrightWhite = "\033[97m"
|
||||||
|
|
||||||
|
// Специальные цвета для prompt (совместимые)
|
||||||
|
ColorPrompt = "\033[96m" // Яркий циан (голубой)
|
||||||
|
//ColorPrompt = ColorBrightBlue // Ярко-синий
|
||||||
|
ColorPromptCode = ColorBrightYellow // Ярко-жёлтый для кода
|
||||||
|
|
||||||
|
// Скрытие/показ курсора
|
||||||
|
ColorHideCursor = "\033[?25l"
|
||||||
|
ColorShowCursor = "\033[?25h"
|
||||||
|
)
|
||||||
|
|
||||||
|
// PrintBanner выводит приветственный баннер
|
||||||
|
func PrintBanner(clusterName string) {
|
||||||
|
// Добавляем пустую строку перед рамкой
|
||||||
|
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)
|
||||||
|
|
||||||
|
fmt.Println(ColorPrompt + border + ColorReset)
|
||||||
|
fmt.Println()
|
||||||
|
}
|
||||||
|
|
||||||
|
// PrintBannerWithConfig выводит баннер с информацией из конфига
|
||||||
|
func PrintBannerWithConfig(clusterName string) {
|
||||||
|
PrintBanner(clusterName)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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
|
||||||
|
}
|
||||||
|
timestamp := time.Now().Format("2006-01-02 15:04:05")
|
||||||
|
fmt.Printf("[%s] [%s] %s\n", timestamp, level, message)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close закрывает консольный логгер
|
||||||
|
func (l *ConsoleLogger) Close() {
|
||||||
|
// В простой реализации ничего не делаем
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPrompt возвращает строку приглашения
|
||||||
|
func GetPrompt() string {
|
||||||
|
return ColorPrompt + "futriis:~> " + ColorReset
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user