109 lines
2.7 KiB
Go
109 lines
2.7 KiB
Go
/*
|
||
|--------------------------------------------------------------------------
|
||
| Manifest
|
||
|--------------------------------------------------------------------------
|
||
|
|
||
| Name:
|
||
| - Status
|
||
|
|
||
| Purpose:
|
||
| - Provide a framework-level CLI status utility that standardizes
|
||
| terminal message presentation using semantic labels and visual
|
||
| indicators to ensure consistent output across all softwares.
|
||
|
|
||
| Guideline:
|
||
| - Use semantic labels to classify terminal messages.
|
||
| - Invalid, unsupported, or empty labels default to INFO.
|
||
| - Emits exactly one terminal message per invocation.
|
||
| - Intended for framework and software level terminal messaging.
|
||
|
|
||
| Example:
|
||
| - ObrimStatus("INFO", "Software started.")
|
||
| - ObrimStatus("SUCCESS", "Operation completed.")
|
||
| - ObrimStatus("WARNING", "Configuration missing.")
|
||
| - ObrimStatus("ERROR", "Operation failed.")
|
||
|
|
||
|--------------------------------------------------------------------------
|
||
*/
|
||
|
||
/*
|
||
|--------------------------------------------------------------------------
|
||
| Credit
|
||
|--------------------------------------------------------------------------
|
||
|
|
||
| Contributor:
|
||
| - Rajon Ahmed
|
||
| - Scionite
|
||
|
|
||
|--------------------------------------------------------------------------
|
||
*/
|
||
|
||
package status
|
||
|
||
import (
|
||
"fmt"
|
||
"strings"
|
||
)
|
||
|
||
// ObrimStatus emits a standardized CLI status message.
|
||
func ObrimStatus(label string, message string) {
|
||
normalizedLabel := obrimStatusNormalizeLabel(label)
|
||
formattedLabel := obrimStatusFormatLabel(normalizedLabel)
|
||
indicator := obrimStatusFormatIndicator(normalizedLabel)
|
||
finalMessage := obrimStatusBuildMessage(
|
||
formattedLabel,
|
||
indicator,
|
||
message,
|
||
)
|
||
|
||
fmt.Println(finalMessage)
|
||
}
|
||
|
||
// obrimStatusNormalizeLabel normalizes and validates status labels.
|
||
func obrimStatusNormalizeLabel(label string) string {
|
||
normalizedLabel := strings.ToUpper(strings.TrimSpace(label))
|
||
|
||
switch normalizedLabel {
|
||
case "INFO":
|
||
return "INFO"
|
||
case "WARNING":
|
||
return "WARNING"
|
||
case "SUCCESS":
|
||
return "SUCCESS"
|
||
case "ERROR":
|
||
return "ERROR"
|
||
default:
|
||
return "INFO"
|
||
}
|
||
}
|
||
|
||
// obrimStatusFormatLabel formats semantic status labels.
|
||
func obrimStatusFormatLabel(label string) string {
|
||
return "[" + label + "]"
|
||
}
|
||
|
||
// obrimStatusFormatIndicator generates visual status indicators.
|
||
func obrimStatusFormatIndicator(label string) string {
|
||
switch label {
|
||
case "INFO":
|
||
return "ℹ"
|
||
case "WARNING":
|
||
return "⚠"
|
||
case "SUCCESS":
|
||
return "✓"
|
||
case "ERROR":
|
||
return "✖"
|
||
default:
|
||
return "ℹ"
|
||
}
|
||
}
|
||
|
||
// obrimStatusBuildMessage constructs the final terminal message.
|
||
func obrimStatusBuildMessage(
|
||
label string,
|
||
indicator string,
|
||
message string,
|
||
) string {
|
||
return fmt.Sprintf("%s %s %s", indicator, label, message)
|
||
}
|