feat: initial goget release — modern IPv6-first download utility
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
//go:build linux || freebsd
|
||||
// +build linux freebsd
|
||||
|
||||
package cli
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// PrintError prints an error with color styling
|
||||
func PrintError(w io.Writer, err error) {
|
||||
prefix, suffix := "", ""
|
||||
if isColorTerminal(w) {
|
||||
prefix = ColorRed + ColorBold
|
||||
suffix = ColorReset
|
||||
}
|
||||
fmt.Fprintf(w, "%s✗ Error:%s %v\n", prefix, suffix, err)
|
||||
}
|
||||
|
||||
// PrintWarning prints a warning with color styling
|
||||
func PrintWarning(w io.Writer, msg string) {
|
||||
prefix, suffix := "", ""
|
||||
if isColorTerminal(w) {
|
||||
prefix = ColorYellow + ColorBold
|
||||
suffix = ColorReset
|
||||
}
|
||||
fmt.Fprintf(w, "%s⚠ Warning:%s %s\n", prefix, suffix, msg)
|
||||
}
|
||||
|
||||
// PrintSuccess prints a success message with color styling
|
||||
func PrintSuccess(w io.Writer, msg string) {
|
||||
prefix, suffix := "", ""
|
||||
if isColorTerminal(w) {
|
||||
prefix = ColorGreen + ColorBold
|
||||
suffix = ColorReset
|
||||
}
|
||||
fmt.Fprintf(w, "%s✓%s %s\n", prefix, suffix, msg)
|
||||
}
|
||||
|
||||
// PrintInfo prints an info message with color styling
|
||||
func PrintInfo(w io.Writer, msg string) {
|
||||
prefix, suffix := "", ""
|
||||
if isColorTerminal(w) {
|
||||
prefix = ColorCyan + ColorBold
|
||||
suffix = ColorReset
|
||||
}
|
||||
fmt.Fprintf(w, "%sℹ%s %s\n", prefix, suffix, msg)
|
||||
}
|
||||
|
||||
// FormatError formats an error with context
|
||||
func FormatError(err error, context string) error {
|
||||
if context == "" {
|
||||
return err
|
||||
}
|
||||
return fmt.Errorf("%s: %w", context, err)
|
||||
}
|
||||
|
||||
// IsTerminal checks if the writer is a terminal
|
||||
func IsTerminal(w io.Writer) bool {
|
||||
_, ok := w.(*os.File)
|
||||
return ok && os.Getenv("TERM") != "dumb"
|
||||
}
|
||||
|
||||
// Colorize wraps text in ANSI color codes if the writer supports it
|
||||
func Colorize(w io.Writer, colorCode, text string) string {
|
||||
if !isColorTerminal(w) {
|
||||
return text
|
||||
}
|
||||
return colorCode + text + ColorReset
|
||||
}
|
||||
|
||||
// Indent returns text indented by the specified number of spaces
|
||||
func Indent(text string, spaces int) string {
|
||||
indent := strings.Repeat(" ", spaces)
|
||||
lines := strings.Split(text, "\n")
|
||||
for i, line := range lines {
|
||||
if line != "" {
|
||||
lines[i] = indent + line
|
||||
}
|
||||
}
|
||||
return strings.Join(lines, "\n")
|
||||
}
|
||||
Reference in New Issue
Block a user