mirror of
https://github.com/dogkeeper886/ollama37.git
synced 2025-12-12 00:37:04 +00:00
update progress rendering to be closer to v0.1.10
This commit is contained in:
@@ -2,11 +2,8 @@ package progress
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"golang.org/x/term"
|
||||
)
|
||||
|
||||
type Spinner struct {
|
||||
@@ -35,45 +32,28 @@ func NewSpinner(message string) *Spinner {
|
||||
}
|
||||
|
||||
func (s *Spinner) String() string {
|
||||
termWidth, _, err := term.GetSize(int(os.Stderr.Fd()))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
var pre strings.Builder
|
||||
var sb strings.Builder
|
||||
if len(s.message) > 0 {
|
||||
message := strings.TrimSpace(s.message)
|
||||
if s.messageWidth > 0 && len(message) > s.messageWidth {
|
||||
message = message[:s.messageWidth]
|
||||
}
|
||||
|
||||
fmt.Fprintf(&pre, "%s", message)
|
||||
if s.messageWidth-pre.Len() >= 0 {
|
||||
pre.WriteString(strings.Repeat(" ", s.messageWidth-pre.Len()))
|
||||
fmt.Fprintf(&sb, "%s", message)
|
||||
if s.messageWidth-sb.Len() >= 0 {
|
||||
sb.WriteString(strings.Repeat(" ", s.messageWidth-sb.Len()))
|
||||
}
|
||||
|
||||
pre.WriteString(" ")
|
||||
sb.WriteString(" ")
|
||||
}
|
||||
|
||||
var pad int
|
||||
if s.stopped.IsZero() {
|
||||
// spinner has a string length of 3 but a rune length of 1
|
||||
// in order to align correctly, we need to pad with (3 - 1) = 2 spaces
|
||||
spinner := s.parts[s.value]
|
||||
pre.WriteString(spinner)
|
||||
pad = len(spinner) - len([]rune(spinner))
|
||||
sb.WriteString(spinner)
|
||||
sb.WriteString(" ")
|
||||
}
|
||||
|
||||
var suf strings.Builder
|
||||
fmt.Fprintf(&suf, "(%s)", s.elapsed())
|
||||
|
||||
var mid strings.Builder
|
||||
f := termWidth - pre.Len() - mid.Len() - suf.Len() + pad
|
||||
if f > 0 {
|
||||
mid.WriteString(strings.Repeat(" ", f))
|
||||
}
|
||||
|
||||
return pre.String() + mid.String() + suf.String()
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
func (s *Spinner) start() {
|
||||
@@ -91,12 +71,3 @@ func (s *Spinner) Stop() {
|
||||
s.stopped = time.Now()
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Spinner) elapsed() time.Duration {
|
||||
stopped := s.stopped
|
||||
if stopped.IsZero() {
|
||||
stopped = time.Now()
|
||||
}
|
||||
|
||||
return stopped.Sub(s.started).Round(time.Second)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user