package main import ( "log" "os" "golang.org/x/term" ) // getTerminalWidth returns the width of the active terminal. // If the output is not an interactive terminal (e.g., it's being piped to a file // or another command), it returns a default width and false. func getTerminalWidth() (int, bool) { // term.IsTerminal checks if the given file descriptor is connected to a terminal. // We use os.Stdout.Fd() to check the standard output. if term.IsTerminal(int(os.Stdout.Fd())) { // term.GetSize returns the dimensions of the given terminal. width, _, err := term.GetSize(int(os.Stdout.Fd())) if err != nil { // If we can't get the size for some reason, fall back to the default. log.Printf("could not get terminal size: %v", err) return 120, false } return width, true } // If it's not a terminal, return the default width. return 120, false } // truncateString shortens a string to the specified length, adding an ellipsis if truncated. func truncateString(s string, maxLength int) string { if len(s) <= maxLength { return s } // Subtract 3 to make room for the ellipsis "..." if maxLength < 3 { return "..." } return s[:maxLength-3] + "..." }