Commit 6bbd6e26 authored by Jeffrey Morgan's avatar Jeffrey Morgan
Browse files

fix temporary newline created and removed with spinner in `ollama run`

parent e6ad4813
......@@ -457,7 +457,7 @@ func generate(cmd *cobra.Command, model, prompt string, wordWrap bool, format st
}
p := progress.NewProgress(os.Stderr)
defer p.Stop()
defer p.StopAndClear()
spinner := progress.NewSpinner("")
p.Add("", spinner)
......@@ -492,7 +492,6 @@ func generate(cmd *cobra.Command, model, prompt string, wordWrap bool, format st
request := api.GenerateRequest{Model: model, Prompt: prompt, Context: generateContext, Format: format}
fn := func(response api.GenerateResponse) error {
spinner.Stop()
p.StopAndClear()
latest = response
......
......@@ -27,7 +27,7 @@ func NewProgress(w io.Writer) *Progress {
return p
}
func (p *Progress) Stop() bool {
func (p *Progress) stop() bool {
for _, state := range p.states {
if spinner, ok := state.(*Spinner); ok {
spinner.Stop()
......@@ -38,22 +38,32 @@ func (p *Progress) Stop() bool {
p.ticker.Stop()
p.ticker = nil
p.render()
fmt.Fprint(p.w, "\n")
return true
}
return false
}
func (p *Progress) Stop() bool {
stopped := p.stop()
if stopped {
fmt.Fprint(p.w, "\n")
}
return stopped
}
func (p *Progress) StopAndClear() bool {
fmt.Fprint(p.w, "\033[?25l")
defer fmt.Fprint(p.w, "\033[?25h")
stopped := p.Stop()
stopped := p.stop()
if stopped {
// clear all progress lines
for i := 0; i < p.pos; i++ {
fmt.Fprint(p.w, "\033[A\033[2K\033[1G")
if i > 0 {
fmt.Fprint(p.w, "\033[A")
}
fmt.Fprint(p.w, "\033[2K\033[1G")
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment