obrimbasecli/essential/visible/service/helper/status/status.go

82 lines
2.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package status
import (
"fmt"
"strings"
)
const (
obrimStatusLabelInfo = "INFO"
obrimStatusLabelWarning = "WARNING"
obrimStatusLabelSuccess = "SUCCESS"
obrimStatusLabelError = "ERROR"
)
// obrimStatusIndicatorRegistry stores status indicators.
var obrimStatusIndicatorRegistry = map[string]string{
obrimStatusLabelInfo: "",
obrimStatusLabelWarning: "⚠",
obrimStatusLabelSuccess: "✓",
obrimStatusLabelError: "✖",
}
// ObrimStatus emits a standardized CLI status message.
func ObrimStatus(label string, message string) {
normalizedLabel := obrimStatusNormalizeLabel(label)
formattedLabel := obrimStatusFormatLabel(normalizedLabel)
formattedIndicator := obrimStatusFormatIndicator(normalizedLabel)
formattedMessage := obrimStatusBuildMessage(
formattedLabel,
formattedIndicator,
message,
)
fmt.Println(formattedMessage)
}
// obrimStatusNormalizeLabel normalizes and validates labels.
func obrimStatusNormalizeLabel(label string) string {
normalizedLabel := strings.ToUpper(strings.TrimSpace(label))
switch normalizedLabel {
case obrimStatusLabelInfo:
return obrimStatusLabelInfo
case obrimStatusLabelWarning:
return obrimStatusLabelWarning
case obrimStatusLabelSuccess:
return obrimStatusLabelSuccess
case obrimStatusLabelError:
return obrimStatusLabelError
default:
return obrimStatusLabelInfo
}
}
// obrimStatusFormatLabel formats semantic labels.
func obrimStatusFormatLabel(label string) string {
return fmt.Sprintf("[%s]", label)
}
// obrimStatusFormatIndicator generates visual status indicators.
func obrimStatusFormatIndicator(label string) string {
indicator, exists := obrimStatusIndicatorRegistry[label]
if !exists {
return obrimStatusIndicatorRegistry[obrimStatusLabelInfo]
}
return indicator
}
// obrimStatusBuildMessage constructs the final terminal message.
func obrimStatusBuildMessage(
label string,
indicator string,
message string,
) string {
return fmt.Sprintf("%s %s %s", indicator, label, message)
}